次の 16 進変換を実行するにはどうすればよいですか。
10
値を 16 進数に変換するA
11
値をに変換するB
12
値をに変換するC
13
値をに変換するD
14
値をに変換するE
15
値をに変換するF
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!」と出力します。
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
の 16 進表現を表示するために変換する必要はありませんint
。
int value = 11;
printf("0x%X", value);
出力します0xB
。と同じように:
int value = 0xB;
printf("%d", value);
11
11 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 になります。
char to_hex(char i)
{
if(i >= 16 || i < 0) return 0;
else if(i >= 10) return i - 10 + 'A';
else return i + '0';
}