перенос длинного шестнадцатеричного кодирования из Java в JavaScript - PullRequest
0 голосов
/ 27 марта 2012

Я хочу кодировать тип номера или строку javascript таким же образом, как я кодирую длинный Java.

java

long toEncode = 1397378335821717182L;

String encoded = Long.toHexString(toEncode); //"13647c315b7adebe"

javascript

var toEncode = '1397378335821717182';

var encoded = //missing code, should be'13647c315b7adebe' in the end as well

делает https://stackoverflow.com/a/57805/1052539 Я получаю '13647c315b7adf00'

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

Вам, вероятно, понадобится библиотека javascript bignum.

Этот, кажется, делает то, что вы хотите: http://www -cs-students.stanford.edu / ~ tjw / jsbn /

редактировать: тот, который я связал, кажется, не работает.Посмотрите вокруг, чтобы найти более подходящий вариант (см. Также https://stackoverflow.com/questions/744099/javascript-bigdecimal-library),, но с использованием другого гугл-хита , простой пример кода:

<script>
  var toEncode = str2bigInt('1397378335821717182', 10);
  document.write(bigInt2str(toEncode, 16).toLowerCase());
</script>

returns: 13647c315b7adebe

Или с thisбиблиотека (которая, по крайней мере, лучше ограничена):

<script type="text/javascript" src="biginteger.js"></script>
<script>
  var toEncode = BigInteger.parse('1397378335821717182');
  document.write(toEncode.toString(16).toLowerCase());
</script>

returns: 13647c315b7adebe
0 голосов
/ 28 марта 2012

Для node.js bigdecimal.js работает довольно хорошо.

BigDec> (new bigdecimal.BigInteger('1397378335821717182')).toString(16)
'13647c315b7adebe'
...