如何执行以下十六进制转换:
- 将十六进制值
10
转换为A
- 将值
11
转换为B
- 将值
12
转换为C
- 将值
13
转换为D
- 将值
14
转换为E
- 将值
15
转换为F
十六进制中的数字11 16 相当于十进制的 1710。您不能将其"转换"为 b16,因为那是 1110 小数,这是不一样的。
目前还不清楚你想完成什么。
如果这样做:
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");
所以上面会打印"它们不一样!
如果要将十进制数打印为十六进制,请使用"%x"
格式代码:
int value = 11;
printf("Value is %d decimal, %x hexadecimaln", value, value);
如果你想从0x11
到0xb
,那么唯一的方法是减去6
:
int value = 0x11;
printf("Before: Value = %d, or 0x%02xn", value, value);
value -= 6;
printf("After : Value = %d, or 0x%02xn", value, value);
以上将打印
之前:值 = 17,或 0x11之后:值 = 11,或0x0b
您不需要任何转换即可显示int
的十六进制表示形式:
int value = 11;
printf("0x%X", value);
输出0xB
.就像:
int value = 0xB;
printf("%d", value);
输出11
自 1110 = B16 ~> 0xB
还写道,您有十六进制值11
并且想要将其转换为B
(这实际上是将十进制值 11 转换为十六进制值 0xB)。但如果11
已经是十六进制值(0x11
),即 1116 ~>它的十进制值将是 1 x 16 1 + 1 x 160 = 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';
}
样本