将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同意,定义更好