unsigned char数组的十进制ascii值

时间:2017-01-18 19:33:30

标签: c++ c arrays qt

如何将char数组转换为等效的ascii十进制数组?我在QT中尝试使用QString和QbyteArray。但它没有用。

i / p:" 1,9,10,2"

o / p:" 4944574449484450" (1' ascii十进制值是49,                             ,ascii十进制值是44,                             9< ascii十进制值是57,依此类推......)。

3 个答案:

答案 0 :(得分:4)

  

如何将char数组转换为等效的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和其他整数类型作为整数

答案 1 :(得分:-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];
}

答案 2 :(得分:-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的一些提示,现在应该会更好......