2014-02-06 105 views
0

我能夠將大多數東西毫無問題地轉換,如果需要的話可以使用谷歌搜索。不過,我無法弄清楚這一點。C++將Ascii Int轉換爲字符到Int

我有一個字符數組,如:

char map[40] = {0,0,0,0,0,1,1,0,0,0,1,0,1... etc 

我想炭轉化爲正確的整數,但無論我怎麼努力,我得到的ASCII值:48/49

我已經嘗試了很多不同的轉換和強制轉換組合,但是我不能以0或1結束,甚至不能作爲char。

任何人都可以幫我解決這個問題嗎? 謝謝。

+0

http://stackoverflow.com/questions/5029840/convert-char-to-int-in-c-and-c – sajas

+1

它看起來你的字符數組更像是這樣的:{ '0',」 0',...,'1',...}爲48和49是顯示字符0和1的ASCII條目。請給我們更多信息。 – ypnos

回答

2

表示整數的字符的ascii範圍是48到57('0'到'9')。您應該從字符中減去基本值48以獲取其整數值。

char map[40] = {'0','0','0','0','0','1','1','0','0','0','1','0','1'...}; 
int integerMap[40]; 

for (int i = 0 ;i < 40; i++) 
{ 
    integerMap[i] = map[i] - 48 ; 
    // OR 
    //integerMap[i] = map[i] - '0'; 


} 
1

如果char是文字,例如'0'(注意引號),轉換到你所要做的一個int:

int i = map[0] - '0'; 
在您 map陣列

,當然類似的操作。錯誤檢查也是謹慎的,所以你知道結果int在0-9的範圍內。

你得到48/49的原因是因爲,正如你所說的,直接轉換像int i = (int)map[0];這樣的字面值給出了字符的ASCII值。