ASCII到十进制值

时间:2014-12-16 09:24:09

标签: c type-conversion hex decimal

请考虑以下示例:

char a  = '4';

int c = (int)a;   // this gives the hex value of '4' which is 0x34

但我希望结果4为整数。这该怎么做?只需转换Hex2Dec

6 个答案:

答案 0 :(得分:12)

int i = a - '0';
printf("%d",i);

数字09的字符值是连续的,您可以在此处使用它,如上所示。

答案 1 :(得分:6)

表示十进制数字的字符按数字顺序排列在ASCII空间中。

  • '0'是ASCII 0x30
  • '1'是ASCII 0x31
  • '2'是ASCII 0x32
  • 等等。

这意味着您只需从角色中减去'0'即可获得所需的值。

char a = ...;
if (a >= '0' && a <= '9')
{
    int digit = a - '0';
    // do something with digit
}

答案 2 :(得分:2)

USe

char a = '4';     //ASCII value of '4' is 52
int b = a - '0';  // ASCii value of '0' is 48 so 52-48 will return 4.
printf("%d", b);  //It will print 4.

答案 3 :(得分:2)

  • 0的ASCII值[以十六进制] == 30。
  • 9的ASCII值[以十六进制] == 39。
希望你得到这种关系。要将character值设为integer,只需从0变量本身中减去char的ASCII值。差异将与值相同。

有关详细信息,请查看ASCII表here

例如,

char cInput = `4`;
int iInput;

iInput = cInput - `0`;

printf("as integer = %d\n", iInput);

将打印4

答案 4 :(得分:2)

ASCII转换为范围a-f,A-F或0-9中字符的值可以使用switch语句完成,如以下函数中所使用的那样:

unsigned char convert(unsigned char ch) {
    unsigned char value;
    switch (ch) {
        case 'A' :
        case 'B':
        case 'C':
        case 'D':
        case 'E':
        case 'F': value = ch + 10 - 'A';  break;
        case 'a':
        case 'b':
        case 'c':
        case 'd':
        case 'e':
        case 'f': value = ch + 10 - 'a';  break;
        default: value = ch - '0';
    }
    return value;
}

答案 5 :(得分:0)

关于你的陈述的一些澄清

  

这给出十六进制值'4'

做:

char a  = '4';

将ASCII值'4'(映射到0x34)放入一个字节变量'a'。

行动:

int c = (int) a; 

被称为铸造。它的作用是将'a'(一个字节)内的值复制到'c'中的值(4个字节)。因此,'c'中的值将为0x00000034(其他3个字节初始化为零)。

最后,当您想要打印值时,您可以以任何您想要的方式进行打印。 的printf( “%d”,C); 会给你十进制值 - 52,而 的printf( “%X”,C); 会给你十六进制值。

干杯,