javascript - 如何在node.js中将缓冲区转换为字符串和字符串转换为缓冲区?
问题描述
我正在尝试编写与 Buffer 和字符串一起使用的通用函数。将其转换为字符串后,我无法获得相同的缓冲区。
fs.readFile(process.argv[2], function(err, data) {
if (!err) {
var text = data.toString('ascii');
var buff = Buffer.from(text);
console.log(ansilove.sauceBytes(data));
console.log(ansilove.sauceBytes(buff));
}
});
我正在使用来自 GitHub ansilove.js的库(原来的似乎已被删除。它也不在 npm 上)。
问题是,当我解析SAUCE元数据时,我得到 160 作为 tInfo1,但是在我将缓冲区转换为字符串并返回到缓冲区之后,我得到了 32。这也是我之前的代码得到的输出正在解析字符串(不像 ansilove uint8array)。
我也试过:
var text = data.toString('ascii');
var buff = Buffer.from(new TextEncoder('utf8').encode(text));
var buff = Buffer.from(new TextEncoder('ascii').encode(text));
var buff = new Uint8Array(new TextEncoder('ascii').encode(text));
文件在 CP437 中编码,但 SAUCE 数据未编码,您不需要转换,它是二进制数据。
我正在测试的文件是 Fuel27 包中的tk - machine.ans(您需要下载 zip 文件)。
解决方案
推荐阅读
- module - ModuleNotFoundError:使用 Spyder
- php - 通过ajax调用将参数传递给控制器中的方法
- python - 在 Django-Filters 中使用 Django-MPTT 让子节点过滤父节点
- youtube - 从 Youtube 获取视频 ID“Live Stream”
- react-native - 如何使用 npm 安装 lodash.filter?
- python-3.x - 动态更改 CSV 文件的标题
- google-contacts-api - 您无法删除此项目,因为它与 Dialogflow 代理相关联
- types - Haxe:如何检查变量是否为函数
- html - 将样式应用于类而不影响导航 LI 中的其他类?
- javascript - 复选框上的 html5 验证