我在二进制数据的操作/存储方面没有太多经验,所以如果有人能为我澄清一些事情,我将不胜感激。
我有一个设备说你必须在哪里存储 16 个字节。例如,您应该向它发送一个可能带有标头信息的字节数组。例如,像这样:
unsigned char sendBuffer[255];
sendBuffer[0] = headerInfo1;
sendBuffer[1] = headerInfo1;
sendBuffer[2] = headerInfo1;
sendBuffer[3] = headerInfo1;
sendBuffer[4] = data;
sendBuffer[5] = data;
sendBuffer[6] = data;
sendBuffer[7] = data;
sendBuffer[8] = data;
...
sendBuffer[20] = data;
假设发送操作很简单,您只需使用Send(sendBuffer, length)
.
我的问题是说我想在设备中存储一个整数- 最好的方法是什么?
我有一个示例代码可以做到这一点,但我不确定它是否可以以及它是如何做到的。这也让我很困惑。我基本上在文本框中输入要存储的数字。假设我想以105
十进制存储。我输入"00000000000000000000000000000105"
(我不确定程序如何将其解释为十进制或十六进制),然后有以下代码:
for(int i=0,m=0; i < size; i+=2,m++)
{
char ch1, ch2;
ch1=(char)str[i]; // str contains the number I entered above as string, padded
ch2=(char)str[i+1];
int dig1, dig2;
if(isdigit(ch1)) dig1 = ch1 - '0';
else if(ch1>='A' && ch1<='F') dig1 = ch1 - 'A' + 10;
else if(ch1>='a' && ch1<='f') dig1 = ch1 - 'a' + 10;
if(isdigit(ch2)) dig2 = ch2 - '0';
else if(ch2>='A' && ch2<='F') dig2 = ch2 - 'A' + 10;
else if(ch2>='a' && ch2<='f') dig2 = ch2 - 'a' + 10;
// Contains data to write as a byte array; this is basically the 'data' part as mentioned in my above snippet
array1[m] = (char)(dig1*16 + dig2);
}
并array1[m]
使用上述方法将其写入设备Send
。但是当我调试array1
包含:0000000000000015
当我读取时,我得到的值是正确的,它是00000000000000000000000000000105
. 这怎么行?