将int添加到char数组中

时间:2013-01-07 14:47:46

标签: c arrays char int

所以我在C中有一个char数组...例如:

uchar arr[3] = { 0x34, 0x45, 0xFF }

我正在寻找一种向它添加整数的快速方法(比如它的0x3445FF),例如,如果我向arr添加2,我得到:

{ 0x34, 0x46, 0x01 }

3 个答案:

答案 0 :(得分:3)

最简单,最好的方法是转换为int,添加,然后转换回来。此外,您需要决定字节顺序,因为它永远不会清楚。

此代码假定为big-endian,即数组最初保持数字0x3445ff:

uint8_t arr[] = { 0x34, 0x45, 0xff };

uint32_t x = (arr[0] << 16) | (arr[1] << 8] | arr[2];

x += 2;

arr[0] = (x >> 16) & 0xff;
arr[1] = (x >> 8) & 0xff;
arr[2] = x & 0xff;

答案 1 :(得分:2)

可能是循环

int index = last_valid_index;
while(index >= 0 && addend > 0) {
    addend += array[index];
    array[index] = addend;
    addend >>= 8;
    --index;
}

足够快吗?

答案 2 :(得分:1)

这是C.您可以将char数组转换为整数数组并直接赋值,类似于

uchar arr[20];
((int *)arr + index/sizeOf(int)) = your_int;

然而,大小,低/大端等将取决于在您的平台上如何表示int。这可能会导致可移植性问题。此外,请注意从00到FF的所有值都是可能的。例如,如果稍后使用null终止符,则中间的00将为您创建问题。此外,在我的示例代码中,整数表示将是sizeOf(int) - aligned。