我现在正在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做到这一点?
答案 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可能会为他描述的应用程序使用字节。