如何转换C中的十六进制值?

时间:2013-09-23 07:50:00

标签: c hex

我将以下值作为十六进制:

`11`, I want to convert it to `B`, how to convert it?

如果值为:12,请将其转换为C13转换为D,如何转换?

4 个答案:

答案 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';
}

sample