首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进程Byte Triples python

进程Byte Triples python
EN

Stack Overflow用户
提问于 2019-11-24 20:17:42
回答 2查看 70关注 0票数 0

这个函数的输入是一个列表中的三个字节。(B01,B02,B03) (124,102,235)获取第二个字节并将其分成两个,取前4位(最小有效)并将其存储到变量(B02a)中,将最后4位(最重要)存储到另一个变量(B02b)中。

你对蟒蛇有什么想法吗?

我试过这个

代码语言:javascript
复制
input_list= (120,198,235)
byte_list =bytearray(input_list)
middle_var=byte_list[1]

print(middle_var)
print(type(middle_var))

删除最后4个字符

代码语言:javascript
复制
B02b = middle_var[:6] 
print(B02b)

删除前4个字符

代码语言:javascript
复制
B02a = middle_var[4:] 

but didnt worked

应该是这样的。

(01111000 11000110 11101011)

代码语言:javascript
复制
     (**1100** *0110* ) these from the middle (396) split in 2 * 4 bits

(110001111000 *0110*11101011)

结果应该是12768 110001111000和1771 *0110*11101011。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-25 00:30:47

使用bitewise算子

代码语言:javascript
复制
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('---')

结果:

代码语言:javascript
复制
 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

代码语言:javascript
复制
int('110001111000', 2) # 3192
票数 0
EN

Stack Overflow用户

发布于 2019-11-25 00:29:51

您可以使用位移动和"&“操作符来计算B02a和B02b。请像这样改变你的代码。

代码语言:javascript
复制
B02a = B02 & 15
B02b = B02 >> 4
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59021965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档