[英]how to make 16bit to 8bit like that 0x0300 to 0x03 and 0x00 by python?
如何通过 python 使 16 位到 8 位像 0x0300 到 0x03 和 0x00?
我试着那样做
reg = 0x0300
print(reg[0:4], reg[4::])..
它告诉我'int' object 不可下标
reg = 0x0316
regbinary = bin(reg)
print(regbinary)
regBotoom = regbinary[-8::]
print(regBotoom)
result = hex('0b'+regBotoom)
print(result)
它告诉我
0b1100010110
00010110
TypeError: 'str' object 不能解释为 integer
您可以通过按位与和移位获得越来越低的 8 位:
reg = 0x0316
lowBits = reg & 0xFF
highBits = (reg >> 8) & 0xFF
print(lowBits)
print(highBits)
也许您正在寻找@jafarlihi 给出的答案,其中reg
实际上只是一个int
并且您改变它的值以获得您所追求的值。
但是,您可能还希望看到:
import struct
reg = 790
regb = struct.pack('h', reg)
print(regb)
msb, lsb = struct.unpack('bb', regb)
print(msb, lsb)
regb_2 = struct.pack('bb', msb, lsb)
print(regb, regb_2)
value = struct.unpack('h', regb)
print(reg, value)
结果:
b'\x16\x03'
22 3
b'\x16\x03' b'\x16\x03'
790 (790,)
位运算符:
x = 0x4321
y = x >> 8
= 0x43
z = x & 0x00ff
= 0x21
如果不先将其转换为字符串,则无法像尝试那样操作 int 。
reg = 0x0300
print(hex((reg >> 8) & 0xFF))
print(hex(reg & 0xFF))
Output:
0x3
0x0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.