0

使用する

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

jsで16進数を2進数に変換する方法は、非常に大きな値で壊れています。

たとえば、0xb5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48 16 進入力が生成するように

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 が非常に大きな数を処理する方法に関連していると感じていますが、これを処理する方法がわかりません。どんな助けでも大歓迎です。base64 コンバーターの最終結果として AAAAAAAAAAAAAAAAAAAAAAAAAAAA を見つけるのは本当に奇妙です。

4

1 に答える 1

0

parseInt 呼び出しは、実際には単なる float である JS 整数になり、精度が制限されます。したがって、parseInt は 3.529532211233421e+86 を返します。あなたの toString(2) はその値から始まり、そこからさらに妥協しています。

于 2013-06-01T23:21:56.607 に答える