使用
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如何处理真正的大数字有关但我不知道如何处理这个问题。任何帮助是极大的赞赏。奇怪的是,找到AAAAAAAAAAAAAAAAAAAAAAAAAA作为base64转换器的最终结果是奇怪的。
答案 0 :(得分:0)
parseInt调用产生的JS整数实际上只是一个浮点数,因此精度有限。所以parseInt给出了3.529532211233421e + 86。你的toString(2)从那个值开始,并从那里进一步妥协。