如何从给定的长HEX哈希生成(在JavaScript或Node.JS中)从0.00000000-100.00000000范围内的浮点数?例如SHA-256?
我愿意使用crypto
库解决方案,因为我使用它来生成给定的哈希值:)
最佳答案
如果您不担心精度损失,并且您的十六进制字符串具有固定长度(与SHA-256一样),则可以简单地从一个值空间映射到另一个值空间:
function hexStrToFraction(hexStr) {
// Expresses a hexadecimal string of N characters as a fraction
// of one above its maximum possible value (16^N).
// Returns a number between 0 and 1.
return parseInt(hexStr, 16) / Math.pow(16, hexStr.length);
}
function sha256ToPercent(sha256) {
return 100 * hexStrToFraction(sha256);
}
请注意,精度损失高得足以使大多数SHA-256冗余:
var a = 'b2339969703a8c4b49e4a5c99cca6013ed455f52d06f8f03adb927aee7d9c3c0'
var b = 'b2339969703a8c8b8504772b860b9ed2cb6aa0186ff6750981e7ccd5344e4bf1'
// ^ differences start here
hexStrToFraction(a) === hexStrToFraction(b) // evaluates true