将ASCII数字转换为它';s ASCII字符代码-C(不打印!)

将ASCII数字转换为它';s ASCII字符代码-C(不打印!),c,file,int,character,ascii,C,File,Int,Character,Ascii,我使用fgetc()方法从C中的文件中读取了一些Ascii值。 它将数字转换为Ascii码,比如:值4等于52,因为52是Ascii码,依此类推所有整数 现在,关于这个问题的所有答案都使用pritf(“%c”,c)来简单地将52转换为4,但我想将值4存储在一个整数变量中 SomeCode: int writeFileToArray(FILE* file, int* a, int length) { int i = 0; char temp; if (file == NUL

我使用
fgetc()
方法从
C
中的文件中读取了一些
Ascii
值。 它将数字转换为Ascii码,比如:值4等于52,因为52是Ascii码,依此类推所有整数

现在,关于这个问题的所有答案都使用
pritf(“%c”,c)
来简单地将52转换为4,但我想将值4存储在一个整数变量中

SomeCode:

int writeFileToArray(FILE* file, int* a, int length)
{
    int i = 0;
    char temp;
    if (file == NULL)
    {
        return -1;
    }
    else
    {
        while (i < length)
        {
            *(a + i) = fgetc(file);
            i++;
        }
        return 1;
    }
} 
int writeFileToArray(文件*FILE,int*a,int长度)
{
int i=0;
焦炭温度;
if(file==NULL)
{
返回-1;
}
其他的
{
while(i
而不是得到52,53,54等的数组,我想得到4,5,6等


谢谢您的帮助。

这在处理ASCII编码时非常简单。只需从ASCII值中减去48即可转换为表示的数字

int actualNumber = asciiValue - 48;

根据您的输入数据的可靠性,通常明智的做法是对输入进行范围检查,确保其实际处于“0”到“9”的范围内。如果你盲目地将该公式应用于不代表数字的ASCII值,你会得到一些非常奇怪的结果。

这在处理ASCII编码时相当简单。只需从ASCII值中减去48即可转换为表示的数字

int actualNumber = asciiValue - 48;

根据您的输入数据的可靠性,通常明智的做法是对输入进行范围检查,确保其实际处于“0”到“9”的范围内。如果你盲目地将这个公式应用于不代表数字的ASCII值,你可能会得到一些非常奇怪的结果。

你甚至可以减去char
'0'
而不是48,以避免神奇的constsYeah。贴出问题后,我自己动手了。谢谢你,伙计。@Lashane使用
'0'
在极端情况下并不总是有效,但在大多数编码中确实是有效的。OP希望将ASCII字符转换为数值
'0'
是源代码编码中字符0的值,可能不是ASCII。因此,如果代码需要移植到现在罕见的EBCDIC机器上,或者可能移植到新的fantasy平台上,可以使用类似于
#define ASCII_0 48 int actual number=ascivalue-ASCII_0是有意义的。@chux同意,define更好您甚至可以减去char
'0'
而不是48,以避免神奇的constsYeah。贴出问题后,我自己动手了。谢谢你,伙计。@Lashane使用
'0'
在极端情况下并不总是有效,但在大多数编码中确实是有效的。OP希望将ASCII字符转换为数值
'0'
是源代码编码中字符0的值,可能不是ASCII。因此,如果代码需要移植到现在罕见的EBCDIC机器上,或者可能移植到新的fantasy平台上,可以使用类似于
#define ASCII_0 48 int actual number=ascivalue-ASCII_0有意义。@chux同意,定义更好