如何在 C 中转换十六进制值

  • 本文关键字:转换 十六进制 c hex
  • 更新时间 :
  • 英文 :


如何执行以下十六进制转换:

  • 将十六进制值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);

如果你想从0x110xb,那么唯一的方法是减去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';
}

样本

最新更新