lua - 读取 .raw 文件

我正在尝试将 .raw 图像文件读入 lua,但是目前我无法成功将二进制转换为整数。我正在尝试以下代码;

f = io.open(filePath,"r")
f:read("*all")

这会产生一个包含以下行的大二进制打印;

?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0??
点赞
用户5352026
用户5352026

也许你应该阅读手册中关于二进制文件的部分:

简单模型函数 io.input 和 io.output 总是以文本模式(默认模式)打开文件。在 Unix 中,二进制文件和文本文件没有区别。但在某些系统中,尤其是 Windows,二进制文件必须以特殊标志打开。要处理这种二进制文件,必须使用 io.open,并在模式字符串中使用字母 `b´。

来源:http://www.lua.org/pil/21.2.2.html

2016-02-10 11:46:34
用户5675002
用户5675002

以下是读取二进制数据的代码,假设只有短整型数据:

local f = io.open("data.bin","rb")
local data = f:read("*all")
f:close()

for i=1,data:len(),2 do
    print(data:byte(i)+256*data:byte(i+1))
end

简单来说,你需要逐个字节地读取数据,并重构成数字。

你需要知道你的数据是最低有效位(LSB)还是最高有效位(MSB)。我的示例假设是最低有效位。

2016-02-10 11:51:18
用户5661707
用户5661707

如果整个文件都由shorts组成,则可以使用torch Storage进行如下操作:

`lua local f = torch.ShortStorage(“data.raw”) `

2016-02-10 12:24:52
用户5908892
用户5908892
.raw 文件是以另一种格式存储的。使用二进制方式阅读或找到图像的正确格式。解码它。
2016-02-11 09:20:03