我正在使用这段代码:
int number; //=smth
unsigned char sendBuffer[255];
sendBuffer[0] = number & 0xFF;
sendBuffer[1] = (number >> 8) & 0xFF;
sendBuffer[2] = (number >> 16) & 0xFF;
sendBuffer[3] = (number >> 24) & 0xFF;
放入number
字节数组sendBuffer
。
我的问题是:
假设我现在想在字节数组中嵌入两个数字,我应该这样进行吗?
sendBuffer[0] = number & 0xFF; sendBuffer[1] = (number >> 8) & 0xFF; sendBuffer[2] = (number >> 16) & 0xFF; sendBuffer[3] = (number >> 24) & 0xFF; sendBuffer[4] = number2 & 0xFF; sendBuffer[5] = (number2 >> 8) & 0xFF; sendBuffer[6] = (number2 >> 16) & 0xFF; sendBuffer[7] = (number2 >> 24) & 0xFF;
即使
number
大小为 8 或 6 个字节,这也能工作吗? (我这么说是因为在某些平台上 int 可能是 4 个字节或 6 个字节对吗?所以我在想上面的代码在数字为 6 个字节时是否也有效?另外需要注意的是,即使它是 6 个字节,但我只在其中存储 4 字节整数,上面的代码可以工作吗?)。我通常将这个缓冲区存储在卡的某些内存中,并且我在读取它时没有问题(例如,字节序等问题,读取时的字节数组似乎按照我保存的顺序出现)。
最后,如何从字节数组中重构整数
sendBuffer
?