# 定义两个十六进制数
int16_t a = 0x100
int16_t b = 0x107
# 将a左移16位,然后与b拼接
combined = (a << 16) | b
print(f"Combined int: {combined}")
print(f"Combined hex: {hex(combined)}")
在这个例子中:
a << 16
将0x100左移16位,这相当于在十六进制值后面添加了四个0,变成了0x1000000。- 然后,
|
操作符用于将上述结果与b
(0x107)进行按位或操作。最终的结果将是两个原始值的拼接:0x1000107。
读取过程
如果需要从这个32位整数中恢复原始的二十六进制数(即0x100和0x107),通过右移和位掩码操作同样可以实现:
# 从combined中恢复a和b
a_restored = combined >> 16
b_restored = combined & 0xFFFF
print(f"Original a: {hex(a_restored)}")
print(f"Original b: {hex(b_restored)}")