1

In c or a c-like language assuming I have a random_hash what is the cheapest way to reduce it to a boolean value i.e. 0 or 1?

An example random_hash to normalise answers: 0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa

Restrictions: no method/stdlib calls.

Why c-like, I'm actually trying to do it in a language called Solidity, which is modeled after c/javascript, which has a very limited runtime/stdlib.

4

4 回答 4

4

从散列中取出最大或最小的位并将其用作布尔值。实际上,假设一个好的散列函数,采取任何一点都应该没问题。假设哈希是一个无符号字符数组,您可以使用按位与运算符&

(hash[0] & 1) > 0
于 2015-08-04T16:14:20.083 回答
3

在 Solidity 中,您可以使用(也建议使用 imallet)

(value & 1) > 0

假设它value是任何uintXX类型bytesXX的。将> 0整数转换为 很重要bool

于 2015-08-07T17:24:24.123 回答
1

假设散列是真正随机的,散列表示为一个字节数组,并且你想做类似的事情bool = (x <= 50) ? 0 : 1,你可以这样做:

bool = (hash[0] <= 127) ? 0 : 1;
于 2015-08-04T16:19:15.423 回答
0

C类: return (hash&1)>0;

于 2015-08-04T16:15:35.057 回答