16进制数需要按位修改,特别是在修改寄存器的时候
16进制数转换为2进制
#16进制数转换为2进制
def hex_to_binary(hex_value):
return bin((hex_value))
二进制数转换为列表
def bin_to_array(bin_str):
integer = int(bin_str, 2)
array = list(map(int, bin(integer)[2:]))
print(array)
return array
二进制数列表转换为16进制数
def binary_array_to_number(binary_array):
result = 0
for bit in binary_array:
result = (result << 1) | bit
print(hex(result))
return hex(result)
实例:
hex_value = 0x1A3F
修改bit3的值为0
执行结果如下:
root@PTWH0108 18:18:28 ~/md5 $ python3 change.py
原16进制数是: 0x1a3f
对应二进制数是:0b1101000111111
二进制列表是:[1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1]
新16进制数是: 0x1a37