私はバイナリデータの操作/保存の経験があまりないので、誰かが私のためにいくつかのことを明確にしていただければ幸いです.
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
10進数で保存したいとします。入力すると"00000000000000000000000000000105"
(プログラムがこれを10進数または16進数としてどのように解釈するかまだわかりません)、次のコードがあります:
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
。なぜこれが機能するのですか?