我正在尝试合并数组中的两个无符号整数。 看起来像
hex[0] == 0x0A;
hex[1] == 0x2C;
我需要将这两个十六进制数合并为一个,因此结果应为0x2AC
。
我的意思是用二进制表示
01010
和101100
,因此结果为1010101100
。
我认为我应该使用按位运算符来执行此操作,但是我不知道如何执行。 谢谢。
答案 0 :(得分:1)
不确定要确切了解什么,但我假设您有两个未签名的字符a和b,其值为
a=0xUV;
b=0xWY;
其中U,V,W和Y是形成这些值的4位半字节。看来您想要由零碎UWVY构成的无符号空缺。因此,在您的情况下,U == 0,V == A,W == 2和Y == C
这可以通过掩盖和移动来完成。使用0x0f进行掩蔽会提取较低的半字节,而使用0xf0进行掩蔽会提取较高的半字节。并且将它们移动到最终结果的适当位置就足够了。
这可以通过以下C代码完成
unsigned char a=0x0A;
unsigned char b=0x2C;
unsigned short result= (a&0xf0)<<8) // gives 0x0000
| (a&0x0f)<<4) // gives 0x00A0
| (b&0xf0)<<4) // gives 0x0200
| (b&0x0f); // gives 0x000C