[英]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);
数字0
到9
的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.
0
[十六进制] == 30。 9
[十六进制] == 39。 希望你能找到关系。 要获得integer
的character
值,只需从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.