ここで 4 桁の 16 進数を 10 進数に変換しようとしていますが、成功しませんでした。これが私のコードです。
unsigned int array[4];
printf("Type in 4-digit hexa: \n");
scanf("%x", &array);
while(getchar() != '\n');
printf("Your number in dec is %u \n", array);
何が問題なのかわかりませんが、正しい dec 出力が得られないだけです。私が EEFF を入力したときのように、61183 を出力するはずですが、プログラムは 65518 を出力し続けました。
この番号はどこから?コードの何が問題になっていますか? FFFF は 65385 に等しく、unsigned int の範囲は 0 ~ 65535 であるという私の考察に従って、unsigned int を使用しました。データの範囲に問題はないはずで、%u も使用しました。
いくつかの検索を行った後、私が今考えることができる唯一のことは、この問題が unsigned int から int または sth へのサイズに関係している可能性があるということです。説明を読んだのですが、よくわかりませんでした。
これは重複している可能性がありますが、これが機能しない理由の簡単な説明を求めています。正直に言うと、私はこのサイトとプログラミングの両方にまったく慣れていないので、コーディングは簡単に行ってください。参考までに、 stdio.h 以外は何も知りません。