我将简要解释一下情况并转向这个问题。
我有向设备(卡)写入/读取一些数据的应用程序。这是一些示例代码。
首先用户输入十六进制字符串,说“ 00000000000000000000AABBEEAABBEE
”(这应该是 16 个字节)。
现在要将这些数据写入卡,它正在转换为字节数组。
for(int i=0,m=0; i < size; i+=2,m++)
{
char ch1, ch2;
ch1=(char)str[i]; // str is hex string
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;
array1[m] = (char)(dig1*16 + dig2); // output byte array
}
现在,这个字节数组被发送到设备,很容易像这样:
unsigned char sendBuff[16];
for(int i=0;i<16;i++)
sendBuff[i]=array1[i];
并调用发送命令,例如Send(sendBuff, 16)
;
读取也很容易,我们称Receive(receiveBuffer);
现在receiveBuffer
包含我们存储的字节数组。我们将其转换回十六进制:
for(k=0;k<16;k++)
{
data[k*2]=hexval[((receiveBuffer[k]>>4)&0xF)];
data[(k*2)+1]=hexval[receiveBuffer[k]&0x0F];
}
现在data
包含:“ 00000000000000000000AABBEEAABBEE
”
上次我问了类似的问题,人们对使用的字节格式、字节序等提出了怀疑/兴趣。我的问题是你能说出上面使用了什么字节序吗?还是某种固定格式?我应该期待一些字节顺序问题吗?