如何将随机散列减少为布尔值

时间:2015-08-04 16:11:19

标签: c ethereum

在c或c语言中假设我有一个random_hash什么是最简单的方法将它减少到一个布尔值,即01

标准化答案的示例random_hash0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa

限制:没有方法/ stdlib调用。

为什么c-like,我实际上是尝试使用名为Solidity的语言来实现它,该语言是在c/javascript之后建模的,它具有非常有限的运行时/ stdlib。

4 个答案:

答案 0 :(得分:3)

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

(hash[0] & 1) > 0

答案 1 :(得分:2)

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

... ORDER BY myField DESC ...

假设(value & 1) > 0属于任何valueuintXX类型。 bytesXX对于将整数转换为> 0

非常重要

答案 2 :(得分:1)

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

bool = (hash[0] <= 127) ? 0 : 1;

答案 3 :(得分:0)

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