-2

だから私が取り組んでいるプログラムがあり、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 ステートメントで途切れてしまい、それを変更することはできません。他にどうすればこれを修正できますか?

4

1 に答える 1

4

先行ゼロを指定する形式を使用します: %04x.

渡された形式を変更しprintfたり、完全に置き換えたりしない限り、出力に影響を与える方法はありません。

于 2013-10-10T05:36:54.160 に答える