繁体   English   中英

十进制字符串到字符的ASCII转换-C

[英]Decimal string to character ASCII conversion - C

有人可以解释如何将十进制值的字符串从ASCII表转换为C中的字符“表示”吗? 例如:用户输入可能是097,并且该功能将在屏幕上打印“ a”,但是用户也可以键入“ 097100101”,并且该功能将必须打印“ ade”等。我写了一些笨拙的东西,但与此相反操作:

char word[30];
scanf("%s", word);

while(word[i]!=0)
{
    if(word[i]<'d')
        printf("0%d", (int)word[i]);
    if(word[i]>='d')
        printf("%d", (int)word[i]);
    i++;
}

但它有效。 现在,我希望具有以类似方式工作的功能,但当然可以进行十进制> char转换。 关键是,我不能使用诸如“ atoi”之类的任何功能(诸如不确定名称,从未使用过它们;)。

您可以使用此函数代替atoi:

char a3toc(const char *ptr)
{
    return (ptr[0]-'0')*100 + (ptr[1]-'0')*10 + (ptr[0]-'0');
}

因此, a3toc("102")将返回与(char) 102相同的东西,它是一个'f'

如果您不明白为什么,请替换以下值: ptr[0]'1' ,因此第一部分变为('1'-'0')*1001*100100 ,即第一部分102 1代表。

标记输入字符串。 我假设您强迫每个字母必须以3个字符表示。 因此,以这种方式断开字符串。 并且只需使用显式类型转换即可获得所需的字符。

我认为我不应该为此提供代码,因为它非常简单,而且更像是一个作业问题。

暂无
暂无

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

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