2

int 型の変数があり、それをバイナリ ファイル内の場所に書き込みたいと考えています。

だから、このようなもの:

with open("file","wb") as f:
    f.seek(position)
    f.write(variable)

ただし、変数はこの位置で 4 バイトを取る必要があります。書くときはどうやって伝えるの?

これは私が読む方法です:

def read(self, position, length):
    self.file.seek(position)
    a=self.file.read(length)
    data=0
    for i in range(length):
        data=data + (a[i])*pow(256,i)
    return data
4

1 に答える 1

4

Python構造体モジュールを使用します。例:struct.pack("<I", 3)

この例では、整数値 3 を符号なし整数のリトル エンディアンに変換します。

ネイティブのサイズと配置を使用して、ネイティブの整数を読み書きする関数を次に示します。

import struct

def write_int(f, position, x):
    f.seek(position)
    f.write(struct.pack("i", x))

_int_length = len(struct.pack("i", 0))  # find out size of native integer
def read_int(f, position):
    f.seek(position)
    return struct.unpack("i", f.read(_int_length))
于 2012-06-13T19:46:25.313 に答える