我想以最简单的方式将Python和Micropython中的两个字节相加
我是。为大学编写一些代码。它只需要将数据发送到以“掩码”移位的地址即可。
addrs = b'\x10'
mask = b'\x01'
finaladdrs = addrs + mask #should be b'\x11'
machine.send(finaladdrs, somevalue)
我已经尝试过将其转换为int,但无法正常工作。转换为字符串需要大量处理。
答案 0 :(得分:1)
字节字符串的元素是整数:
>>> 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')
答案 1 :(得分:0)
您可以使用ord和chr进行转换
代码:
addrs = b'\x10'
mask = b'\x01'
finaladdrs = bytes(chr(ord(addrs) + ord(mask)), encoding='utf-8')
输出:
b'\x11'
答案 2 :(得分:0)
如果您灵活地将addrs
和mask
分配为以0b
而不是b'\x'
开头,则可以采用以下解决方案:
addrs = 0b10
mask = 0b01
finaladdrs = bin(addrs + mask)
print(finaladdrs)
输出:
0b11