首页 > 解决方案 > 如何在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 文件)。

标签: javascriptarraysencodingutf-8

解决方案


推荐阅读