我需要连接位,例如:
0x10 plus 0x12 = 0x1012
or
0x123 plus 0x4 = 0x1234
如果没有字符串类,我该怎么做?
您必须评估最右边值的排名。
我相信,这样的事情应该有效:
// Returns rank of the value increased by one (except, when value == 0)
int rank(int value)
{
int result = 0;
while (value > 0)
{
value /= 16;
result++;
}
return result;
}
int main(int argc, char * argv[])
{
int left = 0x12;
int right = 0x34;
int sum = (left << (4 * rank(right))) + right;
printf("%x\n", sum);
}
您需要的是找到第二个数字中第一个十六进制数字的位置,将第一个数字相应地向左移动,然后将数字相加。要有效地找到二进制数的第一个数字,请参见此处:http ://en.wikipedia.org/wiki/Find_first_set 然后进行模 4 运算以找到第一个十六进制数字。