编写 uint16 原始文件
writing uint16 Raw files
我尝试使用以下代码编写原始文件:
OutputFile = open(OutputFilePath,'w')
BlockArray= np.array(A).astype(np.uint16)
BlockArray.tofile(OutputFile)
OutputFile.close()
然后我尝试再次阅读:
OutputFile = open(OutputFilePath,'r+')
print np.fromfile(OutputFile,dtype=np.uint16)
问题是文件大小是正确的,但前 8192
个数字是好的,但随后数字就颠倒了或完全错误。数组的形状是(300,1312,98)
。我不知道这里发生了什么。那么谁能向我解释发生这种情况的方式以及如何编写正确的原始文件?
with reversed 我的意思是十六进制数应该是例如 A5 01 = 421
但在原始文件中写的是 01 A5 = 42241
.tofile()
方法的默认行为是写入一个二进制文件,因此您必须以二进制模式打开要写入的文件:
OutputFile = open(OutputFilePath, 'wb')
读取文件同样如此:
OutputFile = open(OutputFilePath, 'rb')
这在 Windows 中至关重要,因为 Python 对文本(即非二进制)文件执行的行结尾自动转换。
我尝试使用以下代码编写原始文件:
OutputFile = open(OutputFilePath,'w')
BlockArray= np.array(A).astype(np.uint16)
BlockArray.tofile(OutputFile)
OutputFile.close()
然后我尝试再次阅读:
OutputFile = open(OutputFilePath,'r+')
print np.fromfile(OutputFile,dtype=np.uint16)
问题是文件大小是正确的,但前 8192
个数字是好的,但随后数字就颠倒了或完全错误。数组的形状是(300,1312,98)
。我不知道这里发生了什么。那么谁能向我解释发生这种情况的方式以及如何编写正确的原始文件?
with reversed 我的意思是十六进制数应该是例如 A5 01 = 421
但在原始文件中写的是 01 A5 = 42241
.tofile()
方法的默认行为是写入一个二进制文件,因此您必须以二进制模式打开要写入的文件:
OutputFile = open(OutputFilePath, 'wb')
读取文件同样如此:
OutputFile = open(OutputFilePath, 'rb')
这在 Windows 中至关重要,因为 Python 对文本(即非二进制)文件执行的行结尾自动转换。