需求:给出一个十六进制值,要求提取high和low位之间的值。比如16'ha0f0,这是一个16bit宽的十六进制数0xa0f0,提取[15:12]范围内的值。
def extract_bits(value, high, low):"""从 value 中提取 [high:low] 位的值:param value: 整数,比如 0x8844:param high: 高位,比如 31:param low: 低位,比如 18:return: 提取后的整数"""print(1 << (high - low + 1))mask = (1 << (high - low + 1)) - 1result = (value >> low) & maskreturn resultdef main():# 输入部分hex_str = '0xa0f0'val = int(hex_str, 16) # 你的输入数据bit_high = 15 # 高位bit_low = 12 # 低位# 处理extracted = extract_bits(val, bit_high, bit_low)# 输出print(f"原数值: 0x{val:08x}")print(f"提取位 [{bit_high}:{bit_low}] 后的结果:")print(f"十进制: {extracted}")print(f"十六进制: 0x{extracted:x}")print(f"二进制: {bin(extracted)}")if __name__ == "__main__":main()"""
原数值: 0x0000a0f0
提取位 [15:12] 后的结果:
十进制: 10
十六进制: 0xa
二进制: 0b1010
"""