バイトコードをファイルにバイトコードで書くにはどうしたらいいですか?Pythonはファイルへのバイトの文字列を書き込みます
私が持っている:
['0x28', '0x0', '0x0', '0x0']
どのように私は、ファイルへの0x28、0x0の、0x0の、0x0のを書くのですか?この文字列を有効なバイトに変換して書き込む方法がわかりません。 bytearray()
またはbytes()
オブジェクトへ
バイトコードをファイルにバイトコードで書くにはどうしたらいいですか?Pythonはファイルへのバイトの文字列を書き込みます
私が持っている:
['0x28', '0x0', '0x0', '0x0']
どのように私は、ファイルへの0x28、0x0の、0x0の、0x0のを書くのですか?この文字列を有効なバイトに変換して書き込む方法がわかりません。 bytearray()
またはbytes()
オブジェクトへ
地図、そしてファイルにそれを書く:
with open(outputfilename, 'wb') as output:
output.write(bytearray(int(i, 16) for i in yoursequence))
別のオプションは、bytes
値にあなたの進文字列をオンにするbinascii.unhexlify()
functionを使用することです:
from binascii import unhexlify
with open(outputfilename, 'wb') as output:
output.write(unhexlify(''.join(format(i[2:], '>02s') for i in b)))
ここでは最初に0x
部分を切り捨ててから、値を再フォーマットして0で埋め込み、全体を1つの文字列に結合する必要があります。 Pythonの3.X、bytes()
で
はバイトシーケンスに整数列をオンにします:
>>> bytes([1,65,2,255])
b'\x01A\x02\xff'
ジェネレータ式は、整数にあなたのシーケンスを変換するために使用することができます(int(x,0)
は、文字列を整数に変換していることに注意してください。その接頭辞に応じ0x
)が進を選択:
>>> list(int(x,0) for x in ['0x28','0x0','0x0','0x0'])
[40, 0, 0, 0]
:
>>> bytes(int(x,0) for x in ['0x28','0x0','0x0','0x0'])
b'(\x00\x00\x00'
し、それらを書き出す:
>>> L = ['0x28','0x0','0x0','0x0']
>>> with open('out.dat','wb') as f:
... f.write(bytes(int(x,0) for x in L))
...
4
を、それは私の作品 – zhaozhi