1

当我在结构中使用打包时,我发现在解包过程中我解包字节对象后有额外的字符。

例如打包前: c = b'CONNECT' 使用 struct 解包后得到的值为b'CONNECT\x00\x00\x00\x00\x00'

这是我的代码:

import struct
import datetime
import binascii

string_format = '12s'
s = struct.Struct(string_format)
str = 'CONNECT'
byte = str.encode()
print(byte)

packed_data = s.pack(byte)
print(packed_data)
unpacked_data = s.unpack(packed_data)
unpacked_data = unpacked_data[0]
arr = []

for item in unpacked_data.decode():
    print(item)
    arr.append(item)

print(arr)

b'CONNECT'解压后如何获取。

4

1 回答 1

0

添加额外NUL字节是因为您将结构格式更新为具有 12 个字符'12s'。如果您print('CONNECT'.encode())在所有陈述之前添加,您会发现它是正确的。

由于您可能想要strip关闭其他字符,因此只需使用该功能:

print(repr(unpacked_data.decode().strip()))          #Prints 'CONNECT'
于 2018-04-20T16:16:33.410 回答