在c或c语言中假设我有一个random_hash
什么是最简单的方法将它减少到一个布尔值,即0
或1
?
标准化答案的示例random_hash
:0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa
限制:没有方法/ stdlib调用。
为什么c-like
,我实际上是尝试使用名为Solidity的语言来实现它,该语言是在c/javascript
之后建模的,它具有非常有限的运行时/ stdlib。
答案 0 :(得分:3)
从散列中取出最大或最小位,并将其用作布尔值。实际上,假设一个好的哈希函数,任何位都应该没问题。假设散列是一个unsigned char数组,您可以使用按位AND运算符&
(hash[0] & 1) > 0
答案 1 :(得分:2)
在Solidity中,您可以使用(如imallet也建议)
... ORDER BY myField DESC ...
假设(value & 1) > 0
属于任何value
或uintXX
类型。
bytesXX
对于将整数转换为> 0
。
答案 2 :(得分:1)
假设哈希是真正随机的,哈希表示为一个字节数组,你想做bool = (x <= 50) ? 0 : 1
之类的事情,你可以这样做:
bool = (hash[0] <= 127) ? 0 : 1;
答案 3 :(得分:0)
类C:
return (hash&1)>0;