为什么有些价值观结构包以及解包结构在Windows上失败?

2024-09-22 16:23:16 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用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转换成这个压缩结构,我有什么办法可以把这个值写入文件(压缩的)?在


Tags: 文件value整数openfilename结构structinfile