[英]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.