我应该如何解析这种类型的字节?
How I should parse this type of bytes?
我有以下类型的字节:
b = b'2787\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x03\x01\x00\x00\x00\x00\x00\x96\x08\n\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x0047\x00>2!\tMV\xa7\x00\x00\x00\x00'
我必须将它转换为字符串并获得 2787,我应该如何去除 \x00 值,
我刚刚尝试使用 decode("utf-8") 但抛出以下错误消息:
'utf-8' 编解码器无法解码位置 33 中的字节 0x96:起始字节无效
rstrip('\x00) 也没有用。
我应该使用哪种类型的解码器?
我从这里获取字符串列表:
data, addr = socket_udp.recvfrom(struct.calcsize("B13s9s61s"))
info = struct.unpack("B13s9s61s", data)
而b是最后61个字符串。
字符串内容:
class Udp_packet:
type = 0x00
id = ""
random_num = ""
data = ""
def __init__(self, values_list, convert=False):
self.type = values_list[0]
self.id = values_list[1]
self.random_num = values_list[2]
self.data = values_list[3].split("[=12=]")[0]
代码使用 python 2.7 可以正常工作,我刚转到 3.7.5
你想要的 b
显然是第一个 NUL 字节 b'\x00'
之前的部分,或者只是 b'[=13=]'
,所以你可以通过第一个 NUL 字节的索引:
b = b[:b.find(b'[=10=]')]
我有以下类型的字节:
b = b'2787\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x03\x01\x00\x00\x00\x00\x00\x96\x08\n\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x0047\x00>2!\tMV\xa7\x00\x00\x00\x00'
我必须将它转换为字符串并获得 2787,我应该如何去除 \x00 值, 我刚刚尝试使用 decode("utf-8") 但抛出以下错误消息:
'utf-8' 编解码器无法解码位置 33 中的字节 0x96:起始字节无效
rstrip('\x00) 也没有用。
我应该使用哪种类型的解码器?
我从这里获取字符串列表:
data, addr = socket_udp.recvfrom(struct.calcsize("B13s9s61s"))
info = struct.unpack("B13s9s61s", data)
而b是最后61个字符串。 字符串内容:
class Udp_packet:
type = 0x00
id = ""
random_num = ""
data = ""
def __init__(self, values_list, convert=False):
self.type = values_list[0]
self.id = values_list[1]
self.random_num = values_list[2]
self.data = values_list[3].split("[=12=]")[0]
代码使用 python 2.7 可以正常工作,我刚转到 3.7.5
你想要的 b
显然是第一个 NUL 字节 b'\x00'
之前的部分,或者只是 b'[=13=]'
,所以你可以通过第一个 NUL 字节的索引:
b = b[:b.find(b'[=10=]')]