我将以下值作为十六进制:
`11`, I want to convert it to `B`, how to convert it?
如果值为:12
,请将其转换为C
,13
转换为D
,如何转换?
答案 0 :(得分:3)
数字11 16 ,十六进制,相当于17 10 十进制。你不能将它“转换”为b 16 ,因为这是11 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");
所以上面的将打印出“他们不一样!”。
答案 1 :(得分:2)
如果要将十进制数字打印为十六进制,请使用"%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);
以上将打印
Before: Value = 17, or 0x11 After : Value = 11, or 0x0b
答案 2 :(得分:1)
您无需任何转换即可显示int
的十六进制表示形式:
int value = 11;
printf("0x%X", value);
输出0xB
。就像:
int value = 0xB;
printf("%d", value);
输出11
,因为11 10 = B 16 〜> 0xB
您还写道,您有十六进制值11
,并且您希望将其转换为B
(实际上将十进制值11转换为十六进制值0xB)。但是如果11
已经是十六进制值(0x11
),即11 16 〜>它的十进制值是1 x 16 1 + 1 x 16 0 = 16 + 1 = 17.
答案 3 :(得分: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';
}