2017-01-18 3 views
0

Как преобразовать массив символов в его эквивалентный десятичный массив ascii? Я пытался в QT использовать QString и QbyteArray. Но это не работает.десятичное значение ascii для массива unsigned char

I/P: "1,9,10,2"

о/р: "4944574449484450" (1 в ASCII десятичное значение 49, , ASCII десятичное значение 44, 9 в десятичное значение ASCII является 57 и т. Д.).

+0

Это уже есть. У вас проблемы с печатью? – user4581301

+0

yes, В отладчике отображаются значения. Но я печатаю его, он показывает что-то другое. – 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

Нет необходимости бросать 'char' при присвоении' int' – 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 

char в C++ является числовым типом похож на int, разница в том, std::ostream выходах char как символ и int и другие целочисленные типы как целочисленные.

-2

Вы можете легко сделать этот путь. Это C++, но он будет работать на C с надлежащими включениями и 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; 
} 

Далее следуют некоторые подсказки от @ Натан, это должно быть лучше ...

+0

Он даже не работает на C++. –

+0

@latedeveloper Извините, что вы не можете запустить его. Почему бы и нет? – NeverGoodEnough

+0

'char output [2 * strlen (input) + 1];' является VLA и не является стандартным C++. – NathanOliver

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