我正在尝试将.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?0?0??
答案 0 :(得分:2)
这是你的二进制数据读取,假设只有短路:
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,您现在需要。我的样本假定为LSB。
答案 1 :(得分:2)
如果整个文件都是短裤,你可以使用火炬Storage,如下所示
local f = torch.ShortStorage("data.raw")
答案 2 :(得分:1)
也许你应该阅读关于二进制文件的手册中的这一部分:
简单模型函数io.input和io.output始终以文本模式打开文件(默认值)。在Unix中,二进制文件和文本文件之间没有区别。但在某些系统中,特别是Windows,必须使用特殊标志打开二进制文件。要处理这样的二进制文件,必须使用io.open,模式字符串中带有字母“b”。
答案 3 :(得分:0)
.raw文件采用其他格式。用二进制读取它或找出正确的图像格式。解码它。