繁体   English   中英

Python:如何从字节中提取特定位?

[英]Python: How do I extract specific bits from a byte?

我有一条消息,内容为14 09 00 79 3d 00 23 27 我可以通过调用message[4]从这个消息中提取每个字节,这将给我3d例如。 如何从该字节中提取单个8位? 例如,我如何获得24-27位作为单个消息? 第28位怎么样?

要回答问题的第二部分,可以使用按位运算获取特定的位值

# getting your message as int
i = int("140900793d002327", 16)
# getting bit at position 28 (counting from 0 from right)
i >> 28 & 1
# getting bits at position 24-27
bin(i >> 24 & 0b111)

最简单的方法是使用&运算符。 使用int(str_msg, 16)将消息转换为int。 使用bin(myint)将int转换为二进制字符串

要在一个字节中获得4-6位(左起):

>> msg = int("10110111", 2) # or 0b10110111
>> extractor = int("00011100", 2) # or 0b10110111
>> result = msg & extractor
>> print bin(result)
00010100

如果需要,可以使用result >> 2位移结果。 显然你会想让它变得更有活力,但这是一个愚蠢的例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM