Python:将int写入二进制文件

Python:将int写入二进制文件,python,numpy,file-writing,Python,Numpy,File Writing,我有一个程序,它计算偏移量(差),然后使用numPy将它们存储在一个16位无符号int中,我想将这个int以二进制形式存储到一个二进制文件中。i、 e.如果偏移量的值是05,我希望文件显示“01010000 00000000”,但不是字符串。 我写的代码是: target = open(file_cp, 'wb') target.write('Entries') target.write('\n') Start = f.tell() while(!EOF): f.read(lines)

我有一个程序,它计算偏移量(差),然后使用numPy将它们存储在一个16位无符号int中,我想将这个int以二进制形式存储到一个二进制文件中。i、 e.如果偏移量的值是05,我希望文件显示“01010000 00000000”,但不是字符串。 我写的代码是:

target = open(file_cp, 'wb')
target.write('Entries')
target.write('\n')
Start = f.tell()
while(!EOF):
    f.read(lines)
    Current = f.tell()
    offset = np.uint16(Current-Start)
    target.write(offset)
在f.read(行)之后有一些处理,但这是一种想法。只要偏移量小于127,代码就可以正常工作。一旦偏移量超过127,文件中将显示0xC2以及二进制数据

文件中的数据显示如下(十六进制视图,小印度): 00 00 05 00 0e 00 17 00 20 00 3c 00 4e 00 7b 00 c2 8d 00 c2 92 00 c2 9f 00


有人能为这个问题提出解决方案吗?

您应该使用内置的
struct
模块。与此相反:

np.uint16(Current-Start)
试试这个:

struct.pack('H', Current-Start)
试试这个

import numpy as np
a=int(4)
binwrite=open('testint.in','wb')
np.array([a]).tofile(binwrite)
binwrite.close()

b=np.fromfile('testint.in',dtype=np.int16)
print b[0], type(b[0])
输出:4类型“numpy.int16”

我希望这就是你要找的。 适用于n>127
但是读取和写入numpy数组。。。binwrite=open('testint.in','ab')将允许您向文件中附加更多的整数。

我认为
struct.pack('H',np\u uint16\u instance)
np\u uint16\u instance.tostring()相同,这将向文件中写入一个字符串,这不是我正在寻找的字符串。我已经更新了这个问题,如果之前不清楚的话,很抱歉。这个答案可以通过使用(使文件始终关闭,代码变得更习惯/可读/更短)和作为函数打印来改进-目前,您的程序在当前的Python版本中包含语法错误。感谢您的建议。它仍然做同样的事情。我尝试了148而不是4,文件读取(十六进制视图):c29400