gpt4 book ai didi

javascript - UTF-16 十六进制解码 NodeJS

转载 作者:行者123 更新时间:2023-12-04 15:29:33 27 4
gpt4 key购买 nike

我正在尝试将 UTF-16 十六进制 (Hello 世界) 解码为 NodeJS 中的字符串。我已经尝试通过从十六进制中创建一个缓冲区来做到这一点:

let vari = new Buffer.from('00 48 00 65 00 6C 00 6C 00 6F 00 20 4E 16 75 4C', 'hex').toString();

但是当我控制台记录“vari”时,我没有得到任何/正确的结果。我试过将 'utf8' 和 'utf16le' 传递给 toString 方法,但它似乎也不起作用。谁能指出我正确的方向?

最佳答案

它不起作用,因为您正在从缓冲区的字符串表示中创建一个新缓冲区。这将产生一个缓冲区,然后在解码时将是缓冲区的字符串 '00 48 00 65 00 6C 00 6C 00 6F 00 20 4E 16 75 4C',但由于 hex 缓冲区将为空。如果你要 console.log(Buffer.from('00 48 00 65 00 6C 00 6C 00 6F 00 20 4E 16 75 4C', 'hex') 你会看到一个空缓冲区。

此外,'00 48 00 65 00 6C 00 6C 00 6F 00 20 4E 16 75 4C' 不是“Hello 世界”的 UTF-16 十六进制表示。当编码为字符串时,它是这样的:48 00 65 00 6c 00 6c 00 6f 00 20 00 16 4e 4c 75 是 UTF-16 十六进制的“Hello World”,我通过运行 console.log(Buffer.from( ' Hello World ', 'utf16le'));.

要回答有关如何将 '48 00 65 00 6c 00 6c 00 6f 00 20 00 16 4e 4c 75' 转换回“Hello 世界”的问题,您可以执行以下操作:

let hexStrings = '48 00 65 00 6c 00 6c 00 6f 00 20 00 16 4e 4c 75'.split(' '); // split string chunks
let hex = hexStrings.map(x => parseInt(x, 16)); // convert string chunks to hexadecimal
let buffer = Buffer.from(hex); // create buffer from hexadecimal array
let string = buffer.toString('utf16le'); // convert buffer to string
console.log(string); // output -> Hello 世界

希望这对您有所帮助!

关于javascript - UTF-16 十六进制解码 NodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61492497/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com