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
基础教程推荐
- 当木偶师打开Chrome时,不能使用Chrome扩展 2022-01-01
- 在 Javascript 中使用 Fetch API 上传文件并显示进度 2022-01-01
- 使用 jQuery 在悬停时交换 DIV 类 2022-01-01
- 最佳动态 JavaScript/JQuery 网格 2022-01-01
- 从快速中间件中排除路由 2022-01-01
- 逻辑运算符 ||在 javascript 中,0 代表 Boolean false? 2022-01-01
- 即使每次插入第一个输入的值不同,第二个输入仍显示相同的输入值 2022-01-01
- HTML5 画布调整为父级 2022-01-01
- CORS:当凭据标志为真时,无法在 Access-Control-Allow-Origin 中使用通配符 2022-01-01
- 带角度的选项卡:仅使用 $http 在单击时加载选项卡 2022-01-01
