0

さて、私はこの整数を16進数に変換しようとしてきましたが、成功しましたが、何かを設定するためにこの16進数を使用する必要があります。このために、char配列ではなくcharを使用する必要があります。手動で設定しない限り、他に何も機能していません。おそらく問題は、16進数への変換にsprintfを使用するという問題にありますが、いずれにせよ、このタスクを完了する方法があると確信しています。ここで変更する必要があるのは、出力を char z にすることですが、これを機能させる方法が見つかりませんでした。どんな助けでも大歓迎です。ありがとう

編集:このコードは不完全であり、無関係なコードを入力する目的がないため、直接意味をなさない可能性があります。int x が 100 を超えることはありません。ポイントは、これを 16 進数に変換して、私が持っている設定のメモリに書き込むことです。そのため、整数を16進数から文字に変換する方法を見つけようとしています。私が気づいたように、sprintfはそれをcharに格納された文字列に変換しますが、誰かが指摘したように非文字列です。しかし、後で int を 16 進数に変換し、それを char 変数 forbuse に割り当てる必要があります。そして、それが私が立ち往生しているところです。文字列やその他のものに入ることなく、フォーマットと方法ですべてを完全に処理する最良の方法はわかりません。

VOID WriteSetting(int x)
{
    char output[8];
    sprintf(output, "0x%X", x);
    char z = 0x46
    unsigned char y = z
}

作業コード:

VOID WriteSetting(int x)
{
    unsigned char y = (unsigned char)x;
    Settingdb.Subset.Set = y;
}
4

4 に答える 4

0

やってみました

printf("0x%X", z);
于 2013-06-06T05:57:09.330 に答える
0

C++ 標準では明示的に要求されていませんが、文字のサイズは 1 バイトの場合があり、整数の 4 バイトです。これが、4文字の配列を使用している理由だと思います。

したがって、整数型を 1 文字に詰め込もうとすると、精度が失われます。

PSデータ型のサイズのより正確な説明はここにあります:C++標準は、int、long型のサイズをどのように規定していますか?

于 2013-06-06T06:00:37.670 に答える