だから私が取り組んでいるプログラムがあり、16 進値を含む char 配列からデータにアクセスする必要があります。この例では、データ構造にアクセスするために func() という関数を使用する必要があります。Func() には、それぞれ異なる型の 3 つのポインター変数が含まれており、それらのいずれかを使用して配列内のデータにアクセスできます。どのデータ型を選択しても、ポインタに格納される値に影響します。コードは次のとおりです。
unsigned char data[]
{
0xBA, 0xDA, 0x69, 0x50,
0x33, 0xFF, 0x33, 0x40,
0x20, 0x10, 0x03, 0x30,
0x66, 0x03, 0x33, 0x40,
}
func()
{
unsigned char *ch;
unsigned int i*;
unsigned short* s;
unsigned int v;
s = (unsigned short*)&data[0];
v = s[6];
printf("val:0x%x \n",v);
}
出力:
値:0x366
この出力の問題は、3 の前に 0 がある 0x0366 である必要があることですが、printf ステートメントで途切れてしまい、それを変更することはできません。他にどうすればこれを修正できますか?