1

cまたはcに似た言語random_hashで、ブール値に減らす最も安価な方法があると仮定します。つまり0、または1?

random_hash回答を正規化する例:0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa

制限: メソッド/stdlib の呼び出しはありません。

なぜc-like、私は実際にSolidityと呼ばれる言語でそれをやろうとしています.Solidityc/javascriptは、非常に限られたランタイム/stdlibを持つ.

4

4 に答える 4

4

ハッシュから最大または最小のビットを取得し、これをブール値として使用します。実際には、適切なハッシュ関数を前提として、任意のビットを取得しても問題ありません。ハッシュが unsigned char の配列であると仮定すると、ビットごとの AND 演算子を使用できます&

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

Solidityでは、使用できます(imalletも提案されているように)

(value & 1) > 0

valueそれが anyuintXXまたはbytesXXtypeであると仮定します。は> 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 に答える