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

如何批量将存储16bit整数的.dat文件转换为.txt文件?

批量转换16位整数.dat文件为同名.txt文件方案

以下提供3种不同场景下的可直接运行的方案,默认读取./data目录下的0.dat~210.dat文件,解析16位整数后输出为对应序号的txt文件:

跨平台Python方案(兼容性最高)

需要提前安装numpy依赖:pip install numpy

import numpy as np
import os

data_dir = "./data"
# 若实际文件最大序号为209,将range(211)改为range(210)即可
for idx in range(211):
    dat_path = os.path.join(data_dir, f"{idx}.dat")
    txt_path = os.path.join(data_dir, f"{idx}.txt")
    # 读取16位有符号整数,小端序用dtype="<i2",大端序用dtype=">i2",无符号换为u2
    data = np.fromfile(dat_path, dtype=np.int16)
    # 写入txt,每个数字单独占一行,可修改fmt参数调整输出格式
    np.savetxt(txt_path, data, fmt="%d")

Linux/macOS Shell 方案(无需额外安装依赖)

直接在终端执行以下命令即可:

cd ./data && for i in {0..210}; do od -An -td2 -w "$i.dat" > "$i.txt"; done
  • 参数说明:-td2对应输出16位有符号整数,如需输出无符号16位整数替换为-tu2即可

Windows PowerShell 方案(系统自带工具即可实现)

直接在PowerShell中运行以下代码:

$dataDir = ".\data"
for ($i=0; $i -le 210; $i++) {
    $datPath = Join-Path $dataDir "$i.dat"
    $txtPath = Join-Path $dataDir "$i.txt"
    $bytes = [System.IO.File]::ReadAllBytes($datPath)
    # 如需读取无符号16位整数,将ToInt16替换为ToUInt16即可
    $intArray = for ($offset=0; $offset -lt $bytes.Length; $offset += 2) {
        [System.BitConverter]::ToInt16($bytes, $offset)
    }
    $intArray | Out-File $txtPath -Encoding UTF8
}

内容的提问来源于stack exchange,提问作者ABDULWAHHAB ESSA HAMZAH

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:24:04