十六进制 Python 中的整数
Hexlify an integer in Python
file_1 = (r'res\test.png')
with open(file_1, 'rb') as file_1_:
file_1_read = file_1_.read()
file_1_hex = binascii.hexlify(file_1_read)
print ('Hexlifying test.png..')
file_1_size_bytes = len(file_1_read)
file_1_size_bytes_hex = binascii.hexlify(file_1_size_bytes)
print (file_1_size_bytes_hex)
TypeError: 'int' does not support the buffer interface
好的,所以我想在这里对 .png 的字节长度进行十六进制化。我知道它是因为 file_1_read 的 len() 是一个数字。我正在尝试将十进制转换为十六进制。我该怎么做呢?
您可以使用 str.format
with x
type:
>>> '{:x}'.format(123)
'7b'
>>> '{:08x}'.format(123)
'0000007b'
>>> '%x' % 123
'7b'
>>> '%08x' % 123
'0000007b'
如果要使用 binascii.hexlify
,请使用 struct.pack
:
将 int
对象转换为 bytes
>>> import struct
>>> import binascii
>>> struct.pack('i', 123) # Replace 123 with `file_1_size_bytes`
b'{\x00\x00\x00'
>>> binascii.hexlify(struct.pack('i', 123))
b'7b000000'
您可以使用 >
、<
、.. 格式说明符控制字节顺序:
>>> binascii.hexlify(struct.pack('>i', 123))
b'0000007b'
>>> binascii.hexlify(struct.pack('<i', 123))
b'7b000000'
file_1 = (r'res\test.png')
with open(file_1, 'rb') as file_1_:
file_1_read = file_1_.read()
file_1_hex = binascii.hexlify(file_1_read)
print ('Hexlifying test.png..')
file_1_size_bytes = len(file_1_read)
file_1_size_bytes_hex = binascii.hexlify(file_1_size_bytes)
print (file_1_size_bytes_hex)
TypeError: 'int' does not support the buffer interface
好的,所以我想在这里对 .png 的字节长度进行十六进制化。我知道它是因为 file_1_read 的 len() 是一个数字。我正在尝试将十进制转换为十六进制。我该怎么做呢?
您可以使用 str.format
with x
type:
>>> '{:x}'.format(123)
'7b'
>>> '{:08x}'.format(123)
'0000007b'
>>> '%x' % 123
'7b'
>>> '%08x' % 123
'0000007b'
如果要使用 binascii.hexlify
,请使用 struct.pack
:
int
对象转换为 bytes
>>> import struct
>>> import binascii
>>> struct.pack('i', 123) # Replace 123 with `file_1_size_bytes`
b'{\x00\x00\x00'
>>> binascii.hexlify(struct.pack('i', 123))
b'7b000000'
您可以使用 >
、<
、.. 格式说明符控制字节顺序:
>>> binascii.hexlify(struct.pack('>i', 123))
b'0000007b'
>>> binascii.hexlify(struct.pack('<i', 123))
b'7b000000'