64-битное шестнадцатеричное в десятичное в Javascript - PullRequest
0 голосов
/ 11 июня 2018

Необходимо преобразовать 64-битный шестнадцатеричный код в десятичный в узле, желательно без сторонней библиотеки.

Ввод:

Hex: 0x3fe2da2f8bdec5f4
Hex: 0x402A000000000000

Вывод

Dec: .589134
Dec: 13

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Вы можете сделать это очень легко в файле node.js без каких-либо библиотек, используя Буфер :

const hex = '3fe2da2f8bdec5f4';
const result = Buffer.from( hex, 'hex' ).readDoubleBE( 0 );
console.log( result );

ПРЕДУПРЕЖДЕНИЕ: Смещение 0 равноне обязательно.В нескольких версиях API-интерфейса node.js приведены примеры не предоставления смещения для большинства функций буфера и его обработки как смещения 0, но из-за ошибки в файле node.js версии 9.4.0, 9.5.0, 9.6.0, 9.6.1 и 9.7 вы получите слегка некорректные результаты (например, 13.000001912238076 вместо точно 13), если не указать смещение readDoubleBE в этихверсии.

0 голосов
/ 11 июня 2018

Для тех, кто пытается сделать это на стороне клиента javscript

// Split the array by bytes 
a = "3fe2da2f8bdec5f4"
b = a.match(/.{2}/g);

// Create byte array 
let buffer = new ArrayBuffer(8)
let bytes = new Uint8Array(buffer)

// Populate array 
for(let i = 0; i < 8; ++i) {
    bytes[i] = parseInt(b[i], 16);
}

// Convert and print 
let view = new DataView(buffer)
console.log(view.getFloat64(0, false));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...