繁体   English   中英

在Python / Micropython中求和两个字节

[英]Sum two bytes in Python/Micropython

我想以最简单的方式将Python,Micropython中的两个字节相加

我是 为大学编写一些代码。 它只需要发送数据到“掩码”移位的地址即可。

 addrs = b'\x10'
 mask = b'\x01'
 finaladdrs = addrs + mask #should be b'\x11'
 machine.send(finaladdrs, somevalue)

我已经尝试过转换为int,但无法正常工作。 转换为字符串需要大量处理。

字节字符串的元素是整数:

>>> addrs = b'\x10'
>>> mask = b'\x01'
>>> addrs[0] + mask[0]
17

返回字节:

>>> bytes([addrs[0] + mask[0]])
b'\x11'

这对于遍历字节数据很方便,例如生成校验和:

>>> data = bytes([1,2,3,4,5])
>>> data
b'\x01\x02\x03\x04\x05'
>>> data += bytes([sum(data) & 0xFF]) # bytes data must be 0-255, hence mask
>>> data
b'\x01\x02\x03\x04\x05\x0f'

要限制从整数列表到字节的转换,反之亦然,可以使用可变的字节数组:

>>> addrs = bytearray(b'\x10')
>>> mask = b'\x01'
>>> addrs[0] += mask[0]
>>> addrs
bytearray(b'\x11')

您可以使用ord和chr进行转换

码:

addrs = b'\x10'
mask = b'\x01'

finaladdrs = bytes(chr(ord(addrs) + ord(mask)), encoding='utf-8')

输出:

b'\x11'

如果您灵活地将addrsmask分配为以0b而不是b'\\x'开头,则可以采用以下解决方案:

addrs = 0b10  
mask = 0b01 
finaladdrs = bin(addrs + mask)
print(finaladdrs)

输出:

0b11

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM