だから私はCにchar配列を持っています...例えば:
uchar arr[3] = { 0x34, 0x45, 0xFF }
私はそれに整数を追加する高速な方法(0x3445FFなど)を探しています。たとえば、arrに2を追加すると、次のようになります。
{ 0x34, 0x46, 0x01 }
最も簡単で最良の方法は、intに変換し、追加してから、元に戻すことです。また、バイトオーダーは明確ではないため、バイトオーダーを決定する必要があります。
このコードはビッグエンディアンを想定しています。つまり、配列は最初に数値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;
多分ループ
int index = last_valid_index;
while(index >= 0 && addend > 0) {
addend += array[index];
array[index] = addend;
addend >>= 8;
--index;
}
十分に速いですか?
これはCです。おそらくchar配列を整数配列にキャストして、次のように直接割り当てることができます。
uchar arr[20];
((int *)arr + index/sizeOf(int)) = your_int;
ただし、サイズ、ロー/ビッグエンディアンなどは、プラットフォームでintがどの程度正確に表現されているかによって異なります。これにより、移植性の問題が発生する可能性があります。また、00からFFまでのすべての値が可能であることに注意してください。たとえば、後でnullターミネータを使用する場合、中央の00は問題を引き起こします。また、私のサンプルコードでは、整数表現はsizeOf(int)-整列されます。