2014-10-07 3 views
0

У меня есть массив символов, как это:Преобразование символ [] в Int []

char res[80]="00001111001010100100001010101100000010011100001000110010000101000100001010010001" 

хотите изменить в

int res[80]=00001111001010100100001010101100000010011100001000110010000101000100001010010001 

сделать что-то вроде этого:

char res[80]="00001111001010100100001010101100000010011100001000110010000101000100001010010001"; 
int resInt[80]; 
for (int i = 0; i<80; i++) { 
    resInt [i] = res[i]; 
    printf("%d",resInt[i]); 
} 

результат таков:

4848484849494949484849484948494848494848484849484948494849494848484848484948484949494848484849484848494948484948484848494849484848494848484849484948484948484849 

Может ли кто-нибудь мне помочь? Благодаря

ответ

7

ASCII «0» на самом деле 48 в скалярной форме, так вычесть его:

resInt[i] = res[i] - '0'; 
+1

Большое спасибо, вы спасете мою жизнь .... :) –

+1

@BakhtiarYusuf, вместо публикации "Спасибо!" , Принять ответ, так как он решил вашу проблему –

0

Символьные литералы имеют тип междунар в C. Вы можете преобразовать тип обугленного просто путем присвоения к междунар , Однако итоговые значения int будут значениями ASCII. Поэтому вам нужно вычесть значение ASCII символа '0', чтобы получить фактическое значение.

resInt [i] = res [i] - '0';

Смежные вопросы