int?内のすべてのバイトを出力するには anintは 32 ビット、つまり 4 バイトであることに注意してください。それをcharバッファに読み込むと、.xml 内のこれらの 4 バイトに簡単にアクセスできますint。
編集:タイプの説明はほとんどありintません...
あなたが持っているとしましょうint:
int someIntValue = 0x12345678;
これはメモリに 32 ビットで格納されます。1 バイト ( char) は 8 ビットなので、 まで 4 バイトありますint。の各バイトには、配列またはポインターintを使用してアクセスできます。char
char *someCharPointer = (char *) &someIntValue;
これで、これらの 4 つの個別のバイトにアクセスして、それらの値を確認できます。
for (int i = 0; i < sizeof(int); i++)
printf("someCharPointer[%d] = 0x%02x\n", i, someCharPointer[i]);
上記は (x86 などのリトル エンディアン マシンで) 印刷されます。
someCharPointer[0] = 0x78
someCharPointer[1] = 0x56
someCharPointer[2] = 0x34
someCharPointer[3] = 0x12
someIntValue今の番号に変えたら1
someIntValue = 1;
もう一度印刷すると、次の結果が表示されます。
someCharPointer[0] = 0x00
someCharPointer[1] = 0x00
someCharPointer[2] = 0x00
someCharPointer[3] = 0x01
のメモリ レイアウトint
type の変数がintvalue でメモリに保存されている場合、次0x12345678のように保存されます。
8ビット
、----^-----。
| | | |
+--------+--------+--------+--------+
|00111000|01010110|00110100|00010010|
+--------+--------+--------+--------+
| | | |
「-----------------v-----------------」
| |
32ビット
これintは、4 バイト (またはchar) 0x78、0x56、0x34および と同じ0x12です。
ただし、をint数値に変更すると、次1のように保存されます。
8ビット
、----^-----。
| | | |
+--------+--------+--------+--------+
|00000000|00000000|00000000|00000001|
+--------+--------+--------+--------+
| | | |
「-----------------v-----------------」
| |
32ビット
これintは、4 バイト (またはchar) 0x00、0x00、0x00および と同じ0x01です。
intこれで、 として読み取って として印刷すると、 として読み取って印刷するchar場合とは異なる結果がどのように表示されるかがわかると思います。intint