我遇到了没有打包字符串的结构的问题
我目前创建一个随机的20字节长的字符串,当我尝试使用20个八位字节的结构打包时,由下面的代码
payload = struct.pack("H" * 20, *rendezvous_cookie)
rendezvous_cookie calculated by os.urandom(20)
我得到错误struct.error:无法将参数转换为整数
是否有任何快速简单的方法来编码字符串,以便以这种方式打包?
由于
编辑设法修复它:
payload = struct.pack('!20s', rendezvous_cookie)
这样它将输入作为字符串精细并且仍然是20个八位字节
答案 0 :(得分:1)
os.urandom(n)
会返回长度为str
的随机n
。
如果要从中制作整数列表,请使用:
[ord(b) for b in os.urandom(n)]
您可以将其作为参数提供给struct.pack
。
但请注意,os.urandom(n)
已经返回了一个序列化的字节列表。您可以直接使用它。使用struct.pack("H", ...)
使每个数字占用两个字节(其中一个不包含数据)。