You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按0-255 ASCII值读取文件?Node.js与Python实现

解决方案:按原始字节(0-255范围)读取游戏数据文件

Node.js 实现

问题根源就是你指定了utf8编码读取文件——Node.js会尝试把文件的原始字节解码为UTF-8字符,遇到无法被UTF-8识别的字节序列时,就会用替换字符�(对应的charCode是65533)来替代,这就导致你拿到的数值不对。

正确的做法是不指定编码,直接读取原始Buffer,Buffer本身就是0-255的字节集合,不需要额外转换:

const fs = require('node:fs');
fs.readFile('OUTDOOR.DAT', (err, buffer) => {
  if (err) {
    console.error(err);
    return;
  }
  // 将Buffer转换为0-255数值组成的数组
  const chars = Array.from(buffer);
  console.log(chars);
});

如果需要同步读取,也可以用fs.readFileSync:

const fs = require('node:fs');
try {
  const buffer = fs.readFileSync('OUTDOOR.DAT');
  const chars = Array.from(buffer);
  console.log(chars);
} catch (err) {
  console.error(err);
}

Python 实现

Python中只需以二进制模式打开文件,读取到的bytes对象直接转成列表,每个元素就是0-255的整数:

with open('OUTDOOR.DAT', 'rb') as f:
    # 读取全部字节并转换为整数列表
    chars = list(f.read())
print(chars)

如果需要逐字节处理(比如文件很大不想一次性读入内存),可以迭代读取:

chars = []
with open('OUTDOOR.DAT', 'rb') as f:
    byte = f.read(1)
    while byte:
        chars.append(ord(byte))
        byte = f.read(1)
print(chars)

内容的提问来源于stack exchange,提问作者anon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 05:42:13