我正在尝试在Python中组装一个字节数组,以获得类似于以下内容的签名:
字符串A + B是utf-8,我使用unicode转换为utf-8(字符串,'utf-8')
我尝试将每个项目转换为字节数组并使用加号例如
连接它们bytearray(len(a)) + bytearray(a, "utf-8")...
我也使用struct.pack例如
struct.pack("i", len(a)) + bytearray(access_token, "utf-8")...
但似乎没有任何东西可以产生有效的签名。这是在Python中创建上述字节数组的正确方法吗?
答案 0 :(得分:2)
最后一个问题是关于4字节长度的字节序,但您可以使用struct模块轻松控制它。
我会用
def dopack(A, B, LongA):
fmt='!' # for network order, use < for little endian, > for big endian, = for native
fmt += 'i'
buf = pack(fmt, len(A))
buf += A
buf += pack(fmt, len(B))
buf += B
b = bytes(LongA)
buf += pack(fmt, len(b))
buf += B
通过这种方式,LongA值以ASCII编码,但更容易,您可以int(b)
将其转换回长。