0

次の 16 進変換を実行するにはどうすればよいですか。

  • 10値を 16 進数に変換するA
  • 11値をに変換するB
  • 12値をに変換するC
  • 13値をに変換するD
  • 14値をに変換するE
  • 15値をに変換するF
4

4 に答える 4

4

16 進数の 11 16は、10 進数の 17 10に相当します。それを b 16に「変換」することはできません。これは、同じではない11 10 10進数であるためです。

あなたが達成しようとしていることは非常に不明確です。

これを行う場合:

const int seventeen = 0x11; /* Hexadecimal integer literal. */

またはこれ:

const int seventeen = 17; /* Decimal integer literal, with the same value. */

次に、それは行うことと同じではありません:

const int eleven = 0xb;

またはこれ:

const int eleven = 11;

値、つまり変数に割り当てられたメモリに設定されるビットは異なります。

if(seventeen != eleven)
   printf("they're not the same!\n");

したがって、上記「they're not the same!」と出力します。

于 2013-09-23T07:53:52.620 に答える
2

10 進数を 16 進数として出力する場合は、次の"%x"形式コードを使用します。

int value = 11;
printf("Value is %d decimal, %x hexadecimal\n", value, value);

0x11からに移動したい場合0xb、それを行う唯一の方法は を減算することです6

int value = 0x11;
printf("Before: Value = %d, or 0x%02x\n", value, value);

value -= 6;
printf("After : Value = %d, or 0x%02x\n", value, value);

上記が印刷されます

変更前: 値 = 17、または 0x11
後: 値 = 11、または 0x0b
于 2013-09-23T07:52:41.470 に答える
1

の 16 進表現を表示するために変換する必要はありませんint

int value = 11;
printf("0x%X", value);

出力します0xB。と同じように:

int value = 0xB;
printf("%d", value);

1111 10 = B 16 ~> 0xB以降の出力

11また、16 進数値があり、それを変換したいと書いていますB(実際には、10 進数値 11 を 16 進数値 0xB に変換しています)。しかし、それ11がすでに 16 進値だった場合 ( 0x11)、つまり 11 16 ~> 10 進値は 1 x 16 1 + 1 x 16 0 = 16 + 1 = 17 になります。

于 2013-09-23T07:59:10.780 に答える
0
char to_hex(char i)
{
    if(i >= 16 || i < 0) return 0;
    else if(i >= 10) return i - 10 + 'A';
    else return i + '0';
}

サンプル

于 2013-09-23T07:59:13.560 に答える