需要在节点中将64位十六进制转换为十进制,最好不要使用第三方库。
输入:
Hex: 0x3fe2da2f8bdec5f4
Hex: 0x402A000000000000
输出
Dec: .589134
Dec: 13
答案 0 :(得分:2)
使用Buffer:
,您可以在node.js中轻松完成此操作而无需任何库const hex = '3fe2da2f8bdec5f4';
const result = Buffer.from( hex, 'hex' ).readDoubleBE( 0 );
console.log( result );
警告: 0
的偏移量不是可选的。 node.js API文档的几个版本显示了不为大多数Buffer函数提供偏移量的示例,并将其视为0
的偏移量,但由于bug in node.js版本9.4.0
, 9.5.0
,9.6.0
,9.6.1
和9.7
如果你做的话,你会得到稍微不正确的结果(例如13.000001912238076
而不是13
)不要在这些版本中指定readDoubleBE
的偏移量。
答案 1 :(得分:1)
对于那些试图在客户端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));