1

我有一个 char 数组,但值是字符的十进制表示。例子:

char bytes[4]={50,48,49,51}

如何将其转换为这样的 char 数组:

char bytes1[4]={2,0,1,3}
4

3 回答 3

4

创建数组时,您应该使用字符文字:

char bytes[4] = {'2', '0', '1', '3'};

它们以编译器使用的字符编码存储在内存中,该编码将字符转换为数字。

如果您想在人类读取时获得由字符表示的十进制值(即“2”-> 2),那么您可以bytes[x] - '0'假设数字字符在字符编码中是相邻的(至少对于 ASCII 和 UTF 来说是这样) )。

于 2013-08-20T09:04:26.163 回答
1

这个问题的输入数组是:

char bytes[4]={50,48,49,51}

在内存中,字符存储为相应的ASCII值(或任何其他字符编码方案,由您的编译器选择):http ://en.wikipedia.org/wiki/ASCII

对于给定的输入,ASCII值 - 字符映射如下:

ASCII Value   ||  Character
48            ||     '0'
49            ||     '1'
50            ||     '2'
51            ||     '3'

笔记:

A. 将给定的字符值转换为对应的整数值:

Subtract '0'.

Example: '2' - '0' = (int) 2

B. 将给定的整数值转换为对应的字符:

Add '0'.

Example: 2 + '0' = 50 {ASCII Value for '2'}  

打印给定输入数组的字符值:

int main ()
{
    char bytes[4]={50,48,49,51};  
    int i=0;

    /* Print The Equivalent Character Values */
    for (i=0; i<4; i++)
    {   
        printf ("%c\t", bytes[i]);
    }   

    return 0;
}

输出:

2       0       1       3
于 2013-08-20T09:06:16.673 回答
1

如果您有一个字符数组并希望将它们的值作为整数获取,您可以这样做

int a = bytes[0] - '0';
于 2013-08-20T09:09:51.737 回答