将int转换为字符串中的单个字节?

时间:2013-02-19 20:37:51

标签: python

我现在正在Python中实现PKCS#7填充,并且需要填充我的文件的块,以便达到可被16整除的数字。我建议使用以下方法追加这些字节:

input_chunk += '\x00'*(-len(input_chunk)%16)

我需要做的是:

input_chunk_remainder = len(input_chunk) % 16
input_chunk += input_chunk_remainder * input_chunk_remainder

显然,上面的第二行是错误的;我需要将第一个input_chunk_remainder转换为单个字节字符串。我怎么能用Python做到这一点?

2 个答案:

答案 0 :(得分:6)

要创建给定值的一个字节,可以使用chr() function

>>> chr(5)
'\x05'
>>> chr(5) * 5
'\x05\x05\x05\x05\x05'

或者您可以使用具有正确数量的整数的bytearray()

>>> str(bytearray(5 * [5]))
'\x05\x05\x05\x05\x05'

或使用array.array()使用相同的内容:

>>> import array
>>> array.array('B', 5*[5]).tostring()
'\x05\x05\x05\x05\x05'

或使用struct.pack() function将整数打包成字节:

 >>> import struct
 >>> struct.pack('{}B'.format(5), *(5 * [5]))
 '\x05\x05\x05\x05\x05'

可能还有更多方法..: - )

答案 1 :(得分:0)

在Python3中,内置的bytes接受整数序列。所以只有一个整数:

>>> bytes([5])
b'\x05'

当然,多数民众赞成在字节,而不是字符串。但是在Python3世界中,OP可能会为他描述的应用程序使用字节。