2017-01-18 59 views
0

如何將char數組轉換爲其等效的ascii十進制數組?我嘗試在QT中使用QString和QbyteArray。但它不起作用。無符號字符數組的十進制ascii值

I/P: 「1,9,10,2」

O/P: 「4944574449484450」(1的ASCII十進制值是49, ,ASCII十進制值是44, 9的ASCII十進制值是57,等等..)。

+0

這已經是了。打印它有困難嗎? – user4581301

+0

是的,在調試器中顯示的值。但我打印它,它顯示了不同的東西。 – user1743514

回答

-2

這應該工作

char arr[] = {'1','9','2'}; 
std::vector<int> vec(size); //size of the char array - in this case 3 
for(int i = 0; i < size; i++) 
{ 
    vec[i] = arr[i]; 
} 
+0

爲什麼不添加'std:size_t size = sizeof(arr)/ sizeof(char);'? –

+0

分配給「int」時無需強制轉換char * – Slava

+0

此代碼不需要任何代碼。 –

4

如何字符數組轉換爲其對應的ASCII碼值陣列?

您不這樣做,它已經存儲了那種方式。如果你要打印陣列十進制數爲ASCII只輸出它相應的(爲整數):

char str[] = "1,9,10,2"; 
for(const char *s = str; *s; ++s) std::cout << static_cast<int>(*s) << ","; 
// just output number instead of character 

用C char ++是一種數字型類似int,不同的是std::ostream輸出char作爲一種象徵和int和其他整數類型爲整數。

-2

你可以很容易地做到這一點。它是C++,但它可以在C中使用適當的includes和printf來代替std:cout。

int main() { 
    char input[] = "1,9,10,2"; 
    char output[3*sizeof(input) + 1]; 

    output[0] = '\0'; 
    for (size_t i = 0; i < strlen(input); i++) { 
     sprintf(output, "%s%d", output, input[i]); 
    } 

    std::cout << input << std::endl; 
    std::cout << output << std::endl; 

    return 0; 
} 

其次從@Nathan一些提示,應該是現在好......

+0

它甚至不能在C++中工作。 –

+0

@latedeveloper對不起,你無法運行它。爲什麼不應該呢? – NeverGoodEnough

+0

'char output [2 * strlen(input)+ 1];'是一個VLA,不是標準的C++。 – NathanOliver

相關問題