如何批量将存储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
相关产品推荐
相关产品推荐

