我正在尝试合并两个无符号整数,我在数组中。看起来像
hex[0] == 0x0A;
hex[1] == 0x2C;
我需要将这两个十六进制数合并为一个,所以结果应该是0x2AC
。
我的意思是二进制它看起来像01010
和101100
所以结果是1010101100
。
我想我应该使用按位运算符来做这个,但我不知道如何。谢谢。
不确定要准确理解你想要什么,但我想,你有两个未签名的字符,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