Javascript SHA256哈希到浮点数

Javascript SHA256哈希到浮点数,javascript,sha256,cryptojs,Javascript,Sha256,Cryptojs,我一直在尝试将散列转换为浮点数,到目前为止,我只实现了从它生成一个数字 如何将SHA256哈希转换为介于0.0到1.0之间的浮点数 我是如何得到一个号码的 var hash = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'; var number = hash.substr(0, 8); number = parseInt(number, 16); number = Math.abs(number) % 11

我一直在尝试将散列转换为浮点数,到目前为止,我只实现了从它生成一个数字

如何将SHA256哈希转换为介于0.0到1.0之间的浮点数

我是如何得到一个号码的

var hash = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';
var number = hash.substr(0, 8);
number = parseInt(number, 16);
number = Math.abs(number) % 11;
console.log('Number (0 - 10): ' + number);
大概是这样的:

var hash = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';
var number = 0.0;
for(let i=0;i<hash.length;i++) {
    number += parseInt(hash.charAt(i), 16) / 16;
}
number /= hash.length;
console.log('number = ' + number);
var hash='e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';
变量数=0.0;

for(设i=0;i由Mörre给出的注释包含最佳答案。只需获取散列的前52位(或任何方便的52位)并将其分配给一个javascript数字。一个52位整数可以存储为IEEE 754 double。然后简单地将该数字除以252,这只会影响该数字的指数位。结果是一个浮点数x,0。我不知道这是否可能?根据定义,浮点数有一定程度的不精确性(必须弥补)与它的存储方式有关。即使你可以转换散列,它也完全有可能不再是一个精确的表示。你想实现什么?@roelofs“不精确”:-)---To OP:你可以查看crypto StackExchange论坛,例如@Mörre-这是一个-谢谢!很好的链接,尽管我不确定他想要什么。理论上,有足够大的尾数和指数,他可以将散列除以一个非常大的数…@Mörre检查我编辑的代码,如果我可以得到一个整数我当然应该可以得到一个浮点,或者..?你可以创建一个哈希,从SHA256的256位到Javascript
Number
的位,然后用
TypedArray
赋值。你肯定会丢失信息,因为
Number
中的位数要少得多!你可以简单地使用every第4位。实际上还有一点,因为这里只能使用Javascript
数字中的64位中的一部分。--查看JS数字格式的解释:或者只使用前52位,丢弃哪一位应该无关紧要。