繁体   English   中英

ASCII 到十进制值

[英]ASCII to decimal value

考虑以下示例:

char a  = '4';

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

但我希望结果4为 integer。该怎么做? 只是Hex2Dec转换?

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

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

代表十进制数字的字符以数字顺序布置在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
}

采用

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.
  • ASCII值0 [十六进制] == 30。
  • ASCII值9 [十六进制] == 39。

希望你能找到关系。 要获得integercharacter值,只需从char变量本身减去ASCII值0 差异将与值相同。

有关详细信息,请在此处检查ASCII表。

例如

char cInput = `4`;
int iInput;

iInput = cInput - `0`;

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

将打印4

可以使用switch语句将af,AF或0-9范围内的字符从ASCII转换为值,如以下函数中所使用的:

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;
}

关于您的陈述的一些澄清

这给出十六进制值“ 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); 将为您提供十六进制值。

干杯,

#include <string.h>

#include void main(){ if(,strcmp(name;"Jan") printf("wellcom Jan"); else printf("Error"); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM