进程字节三元组python

2024-10-03 21:36:08 发布

您现在位置:Python中文网/ 问答频道 /正文

此函数的输入是列表中的三个字节(B01、B02、B03)(124102235) 把第二个字节一分为二 取前4位(最低有效位)并将其存储到变量(B02a)中 将最后4位(最高有效)存储到另一个变量(B02b)中

你对python有什么想法吗

我试过了

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

应该是这样的

(011110001101111101011)

     (**1100** *0110* ) these from the middle (396) split in 2 * 4 bits

11000111000*0110*11101011)

结果应该是 12768110001111000和1771*0110*11101011


Tags: 函数middle列表input字节varbytelist
2条回答

使用位运算符

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

可以使用位移动和“&运算符以计算B02a和B02b。请像这样更改代码

B02a = B02 & 15
B02b = B02 >> 4

相关问题 更多 >