ИспользованиеJavascript порывая с большим шестнадцатеричное число преобразования в двоичную
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.
Я предполагаю, что точность числа в javascript виновата. Попробуйте запустить 'Math.floor (.9999999999999999999999999999999999999)' и посмотреть, что это заставляет вас. – adeneo
Он выводит один. Это немного разочаровывает, я думал, что он будет обрабатывать большие числа лучше, чем маленькие. Есть ли идеи о том, как я могу обойти этот предел? – Everlag
Вам нужно будет получить библиотеку, которая сохранила числа в виде строк (или другого не номера). Быстрый поиск по поисковым запросам нашел http://www.cjandia.com/2012/06/x-calc/libs/bigint.js.txt, хотя я не видел шестнадцатеричного преобразования там (легко писать). – DrC