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


基础教程推荐
- 在 contenteditable 中精确拖放 2022-01-01
- 检查 HTML5 拖放文件类型 2022-01-01
- npm start 错误与 create-react-app 2022-01-01
- 如何添加到目前为止的天数? 2022-01-01
- 原生拖动事件后如何获取 mouseup 事件? 2022-01-01
- fetch 是否支持原生多文件上传? 2022-01-01
- Bokeh Div文本对齐 2022-01-01
- Bootstrap 模态出现在背景下 2022-01-01
- 即使用户允许,Gmail 也会隐藏外部电子邮件图片 2022-01-01
- Fabric JS绘制具有活动形状的多边形 2022-01-01