我有一个char数组但值是字符的十进制表示。 例如:
char bytes[4]={50,48,49,51}
如何将此转换为获取char数组:
char bytes1[4]={2,0,1,3}
答案 0 :(得分:4)
创建数组时,应使用字符文字:
char bytes[4] = {'2', '0', '1', '3'};
它们以编译器使用的字符编码存储在内存中,将编码转换为数字。
如果你想在人类读取时得到字符所代表的十进制值(即'2' - > 2),那么你可以bytes[x] - '0'
假设数字字符在字符编码中是相邻的(至少在ASCII和UTF中也是如此。
答案 1 :(得分: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'
注意:强>
一个。将给定字符值转换为相应的整数值:
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
答案 2 :(得分:1)
如果你有一个字符数组,并希望将它们的值作为整数得到
int a = bytes[0] - '0';