?需求:給出一個十六進制值,要求提取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
"""