0

使用

binary= parseInt(hex,16).toString(2)

作为在 js 中将十六进制数转换为二进制数的一种方法,它的值非常大。

例如,0xb5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48 作为十六进制输入将产生

101101011010111101001000101101011010111101001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

这显然是一个不正确的回应

10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000

将是正确的回应。

我觉得这与 js 如何处理非常大的数字有关,但不知道如何处理。任何帮助是极大的赞赏。找到 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 作为 base64 转换器的最终结果真的很奇怪。

4

1 回答 1

0

parseInt 调用会产生一个 JS 整数,它实际上只是一个浮点数,因此准确性有限。所以 parseInt 给出 3.529532211233421e+86。您的 toString(2) 以该值开始,并从那里进一步妥协。

于 2013-06-01T23:21:56.607 回答