这个函数的输入是一个列表中的三个字节。(B01,B02,B03) (124,102,235)获取第二个字节并将其分成两个,取前4位(最小有效)并将其存储到变量(B02a)中,将最后4位(最重要)存储到另一个变量(B02b)中。
你对蟒蛇有什么想法吗?
我试过这个
input_list= (120,198,235)
byte_list =bytearray(input_list)
middle_var=byte_list[1]
print(middle_var)
print(type(middle_var))删除最后4个字符
B02b = middle_var[:6]
print(B02b)删除前4个字符
B02a = middle_var[4:]
but didnt worked应该是这样的。
(01111000 11000110 11101011)
(**1100** *0110* ) these from the middle (396) split in 2 * 4 bits(110001111000 *0110*11101011)
结果应该是12768 110001111000和1771 *0110*11101011。
发布于 2019-11-25 00:30:47
使用bitewise算子
B01, B02, B03 = (120,198,235)
print(f' B01: {B01:012b}', B01)
print(f' B02: {B02:012b}', B02)
print(f' B03: {B03:012b}', B03)
print('---')
B02a = B02 & 0xF0
B02b = B02 & 0x0F
print(f'B02a: {B02a:012b}', B02a)
print(f'B02b: {B02b:012b}', B02b)
print('---')
B02a = B02a << 4
B02b = B02b << 8
print(f'B02a: {B02a:012b}', B02a)
print(f'B02b: {B02b:012b}', B02b)
print('---')
X1 = B01 | B02a
X2 = B03 | B02b
print(f' X1: {X1:012b}', X1)
print(f' X2: {X2:012b}', X2)
print('---')结果:
B01: 000001111000 120
B02: 000011000110 198
B03: 000011101011 235
---
B02a: 000011000000 192
B02b: 000000000110 6
---
B02a: 110000000000 3072
B02b: 011000000000 1536
---
X1: 110001111000 3192
X2: 011011101011 1771比特与预期的一样,但是您错误地将110001111000转换为12768,因为它提供了3192。
int('110001111000', 2) # 3192发布于 2019-11-25 00:29:51
您可以使用位移动和"&“操作符来计算B02a和B02b。请像这样改变你的代码。
B02a = B02 & 15
B02b = B02 >> 4https://stackoverflow.com/questions/59021965
复制相似问题