求助:python如何按位解析二进制数据

Python010

求助:python如何按位解析二进制数据,第1张

可以的,二进制是计算机内的表示方法,处理二进制数据是最基本的能力。

如果是二进制字符串转十进制:

>>> x = '10101010'

>>> int(x, 2)

170

如果是从文件或网络中获取的数据,要知道某一位是0还是1的话,获取的数据可以按字符读取,由于一个字符由8位二进制表示,分别读取1到8位的二进制值就可以了:

>>> get_char_bit = lambda char, n: (char >> (8-n)) & 1 # 从高到低分别为第1~8位

>>> data = b'ab' # 在python3中字符串默认是unicode,所以加上b前缀兼容

>>> # 在python3中按字符读取byte字符串是数字,而python2读出来的却是字符,但bytearray是一致的都是数字

>>> data = bytearray(data)

>>> result = []

>>> for char in data:

        for i in range(1, 9):

            result.append(get_char_bit(char, i)) 

>>> result

[0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0]

还有一种比较简单的方法是使用内置的bin函数

>>> data = bytearray(b'ab')

>>> result = []

>>> for char in data:

        result.extend(bin(char)[2:].rjust(8, '0'))

        

>>> result

['0', '1', '1', '0', '0', '0', '0', '1', '0', '1', '1', '0', '0', '0', '1', '0']

a=a>>1

python9左移与右移方法/步骤:

1.新建一个左移与右移.py文件,

2.设置脚本文件的编码:#coding=gbk,

3.定义一个整型变量a,代码:a=9

4.对整型变量a进行左移操作,左移1位,代码:a=a5.对整型变量a进行右移操作,右移1位,代码:a=a>>1

6.使用print()函数输出左移和右移后的整型变量。