当我使用struct.pack()
将python整数转换为C结构(并将其写入文件),然后使用struct.unpack()
来反转转换时,我通常会得到原始值……但并不总是这样。为什么?是否存在一些不可管理的值?在
示例:
import struct
fileName ='C:/myFile.ext'
formatCode = 'H'
nBytes = 2
tries = range(8,12)
for value in tries:
newFile = open(fileName, mode='w+')
myBinary = struct.pack( formatCode, value )
newFile.write(myBinary)
newFile.close()
infile = open(fileName,'rb')
bytesRead = infile.read(nBytes)
newValue = struct.unpack( formatCode, bytesRead )
print value, 'equal', newValue[0]
infile.close()
退货:
^{pr2}$它不仅发生在整数(2字节:格式'H')中,而且也发生在其他类型和值中。如果我打包为整型,而不是浮点型,那么值10给出了这个“错误”,但是使用float时,我会得到其他值的错误。在
如果问题是我不能将整数10转换成这个压缩结构,我有什么办法可以把这个值写入文件(压缩的)?在
写入时忘记指定二进制模式。}。在
wb+
不是{相关问题 更多 >
编程相关推荐