gpt4 book ai didi

Python - 将二进制解码为 boolean 值

转载 作者:行者123 更新时间:2023-12-04 00:36:17 25 4
gpt4 key购买 nike

我正在尝试使用套接字接收一些数据,然后解压缩数据以对其进行处理。

在输入中,我有一个二进制字符串:"MsgID - Sender - Size - Time1 - Time2 - Resrv - bool1 - bool2"

格式如下:“H-H-L-f-I-L-'bool'-'bool'”

当我收到数据时,我必须用这一行解压它:

messageEnaKill = struct.unpack('!HHLfIL??', messageEnaKill_raw)

然后我必须处理 boolean 值(最后两个)。事实上,我不知道 boolean 值的格式,它是 char ('c') 还是什么?

我的第二个问题是我必须检查二进制 boolean 值是真还是假。我怎样才能做到这一点 ?这段代码是真的吗:

if msg[0] == bin(True):

考虑“msg[0]”来自“unpack”的 boolean 数据。

感谢支持!

最佳答案

来自 struct documentation :

The '?' conversion code corresponds to the _Bool type defined by C99. If this type is not available, it is simulated using a char. In standard mode, it is always represented by one byte.

? 类型将被解包为 bool 类型:

>>> type(struct.unpack('?','c')[0])
<type 'bool'>

除空字符 ('\0') 之外的任何值都将为 True。因此,您可以遵循 Jan Vlcinsky 的建议。您的解决方案取决于您收到的数据。如果空字节表示 False 而其他字节表示 True,那么您可以继续使用 ? 解包作为最简单的解决方案。

因此,要检查消息中的第一个 boolean 值是否为真,请使用此测试:

messageEnaKill = struct.unpack('!HHLfIL??', messageEnaKill_raw)
if(messageEnaKill[7]==True):
# do something

关于Python - 将二进制解码为 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24038353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com