2

我需要连接位,例如:

0x10 plus 0x12 = 0x1012
or
0x123 plus 0x4 = 0x1234

如果没有字符串类,我该怎么做?

4

2 回答 2

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);
}
于 2013-06-20T06:45:42.643 回答
1

您需要的是找到第二个数字中第一个十六进制数字的位置,将第一个数字相应地向左移动,然后将数字相加。要有效地找到二进制数的第一个数字,请参见此处:http ://en.wikipedia.org/wiki/Find_first_set 然后进行模 4 运算以找到第一个十六进制数字。

于 2013-06-20T06:46:17.143 回答