我需要连接位,例如:
0x10 plus 0x12 = 0x1012
or
0x123 plus 0x4 = 0x1234
如果没有字符串类,我该怎么做?
答案 0 :(得分:3)
您必须评估最右边的值的等级。
我相信,这样的事情应该有效:
// 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);
}
答案 1 :(得分:1)
你需要的是找到第二个数字中第一个十六进制数字的位置,相应地将第一个数字向左移动然后对数字求和。要有效地找到二进制数的第一个数字,请参见此处:http://en.wikipedia.org/wiki/Find_first_set 然后进行模4运算以找到第一个十六进制数字。