UTF-16 Hex Decode NodeJS(UTF-16十六进制解码节点JS)
问题描述
我正在尝试将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世界",这是我在运行console.log(Buffer.from('Hello 世界', '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 世界
希望这能有所帮助!
这篇关于UTF-16十六进制解码节点JS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:UTF-16十六进制解码节点JS


基础教程推荐
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 动态更新多个选择框 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01