我有一个可以读取.bin文件并解析数据的MATLAB应用程序。我正在尝试将此脚本从MATLAB转换为Python,但在读取的值中发现了差异。
在MATLAB脚本中使用的Read函数是:
fname = 'file.bin';
f=fopen(fname);
data = fread(f, 100);
fclose(f);
我尝试的Python转换是:(编辑)
fname = 'file.bin'
with open(fname, mode='rb') as f:
data= list(f.read(100))
然后,我将打印读取字节与它们的索引的并排比较,并发现两者之间存在差异。通过执行$ hexdump -n 100 -C file.bin
并在应用程序HexEdit上查看文件内容,我已经确认了在Python中读取的值是正确的。
如果您能深入了解这两个项目之间差异的根源,以及我如何解决这个问题,我将不胜感激。
注意:我正在尝试只使用内置的Python库来解决这个问题。
解决方案:在编程语言之间使用不正确的文件路径/结构。
2条答案
按热度按时间ruyhziif1#
正如MATLAB所做的那样,Python自动将单字节转换为无符号整数,因此您只需执行以下操作。
同样欢迎使用python,
bytes
是内置类型,所以请不要重写内置的bytes
类型...否则你会遇到意想不到的问题。编辑:正如@juanpa.arrivilaga所指出的,您可以使用更快的
n53p2ov02#
使用NumPy对matlab代码的准确翻译如下: