十六进制 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'

或使用printf-style formatting:

>>> '%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'

Format characters - python struct module documentation