python 位操作 取反问题
python3的bytearray只能存放0-255的整数,而python中~取反操作会生成负数,如下:a=bytearry(1)a[0]=0xf0a[0]=0x0fa[...
python3 的bytearray只能存放0-255的整数,而python中~取反操作会生成负数,如下:
a = bytearry(1)
a[0] = 0xf0
a[0] = 0x0f
a[0] = ~a[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: byte must be in range(0, 256)
求解如何实现bytearray中字节数据取反操作? 展开
a = bytearry(1)
a[0] = 0xf0
a[0] = 0x0f
a[0] = ~a[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: byte must be in range(0, 256)
求解如何实现bytearray中字节数据取反操作? 展开
3个回答
展开全部
python 3的整型以16bit递增。
0xf0 =0b 0000 0000 1111 0000
~0xf0之后得到1111 1111 0000 1111
[1][111 1111 0000 1111]
确定是负数,有负数等于绝对值反码加一。求补码形式。
绝对值减1得:111 1111 0000 1110
反码得:000 0000 1111 0001
得-0xf1即-241(你那的~a[0]得-241)
要求得到[0,256),限定一下范围即可。
>>> (~a[0])&0xff
15
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询