如何將char數組轉換爲其等效的ascii十進制數組?我嘗試在QT中使用QString和QbyteArray。但它不起作用。無符號字符數組的十進制ascii值
I/P: 「1,9,10,2」
O/P: 「4944574449484450」(1的ASCII十進制值是49, ,ASCII十進制值是44, 9的ASCII十進制值是57,等等..)。
如何將char數組轉換爲其等效的ascii十進制數組?我嘗試在QT中使用QString和QbyteArray。但它不起作用。無符號字符數組的十進制ascii值
I/P: 「1,9,10,2」
O/P: 「4944574449484450」(1的ASCII十進制值是49, ,ASCII十進制值是44, 9的ASCII十進制值是57,等等..)。
這應該工作
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];
}
爲什麼不添加'std:size_t size = sizeof(arr)/ sizeof(char);'? –
分配給「int」時無需強制轉換char * – Slava
此代碼不需要任何代碼。 –
如何字符數組轉換爲其對應的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
和其他整數類型爲整數。
你可以很容易地做到這一點。它是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一些提示,應該是現在好......
它甚至不能在C++中工作。 –
@latedeveloper對不起,你無法運行它。爲什麼不應該呢? – NeverGoodEnough
'char output [2 * strlen(input)+ 1];'是一個VLA,不是標準的C++。 – NathanOliver
這已經是了。打印它有困難嗎? – user4581301
是的,在調試器中顯示的值。但我打印它,它顯示了不同的東西。 – user1743514