python - 在 Python 中对整数进行十六进制化

标签 python python-3.x hex

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 x type :

>>> '{:x}'.format(123)
'7b'
>>> '{:08x}'.format(123)
'0000007b'

或使用 printf -style formatting :

>>> '%x' % 123
'7b'
>>> '%08x' % 123
'0000007b'

如果你想使用binascii.hexlify , 转换 int反对 bytes使用 struct.pack :

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

关于python - 在 Python 中对整数进行十六进制化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27995971/

相关文章:

python - 在Python中解析半结构化文本字符串

python - 无法将 'int' 对象转换为 str

java - 如何将十六进制字符串直接转换为字节数组?

python - 在自定义位置拆分字符串的更简单/更快/更优雅的方法

python - 从python中的函数返回错误字符串

Python unhexlify 十六进制到 alpha 转换失败

c++ - 将字节转换为两位十六进制数

python - NoneType 对象不可迭代

python - 是否可以在构建后修改 Django Q() 对象?

python - 如何 "send keys"到 Canvas 元素的持续时间更长?