2014-10-07 3 views
0

Итак, я пытаюсь декодировать этот массив в строку текста (ASCII) Я не совсем уверен, как это сделать, и у меня нет опыта работы с C, но у меня есть доступ к текстовый редактор или терминал. Есть ли какие-либо инструменты, которые я могу использовать на платформе UNIX (GNU)?Декодирование массива

char name[] = { 0x64, 0160, (114-63), (064+03), 0x00 }; 

Спасибо!

+2

они просто коды персонажей. '{hex, восьмеричный, десятичный, восьмеричный, шестнадцатеричный}. найдите коды ascii, соответствующие значениям. –

+0

@MarcB +1. Из-за этого у меня есть столик с ацием. – IdeaHat

+0

Также помогает «человек ascii». – alk

ответ

0

Конечно, проще всего было бы компилировать и запускать программу. Но на самом деле это не так. Когда вы узнаете трюк , это просто разные базовые представления чисел, тогда вы должны пройти задачу вычисления чисел и поиска их в таблице ascii, что почти наверняка находится в задней части учебника или доступно на тот же сайт.

Помните основную теорему арифметики:

12345 = 1 *10^4 + 2 *10^3 + 3 * 10^2 + 4 * 10^1 + 5 * 10^0 
0xABC = A * 16^2 + B * 16^1 + C * 16^0 

Вы также можете исследовать их с (достаточно мощным) текстовым редактором. Вам нужно будет сделать дополнение самостоятельно, но в vim вы нажмете ctrl-V, а затем число, за которым следует пробел (который вы можете удалить).

0

Если вы распечатать эту последовательность с помощью printf("%c",name[i]) в цикле для каждого индекса имени, он будет автоматически преобразовывать шестнадцатеричные и восьмеричные представления в десятичные и печати соответствующим символом ASCII

+0

Вам не хватает того, что одно из значений, например, больше 127, поэтому оно становится зависимым от кодовой страницы и не обязательно переносимо. – DevNull

+0

Проверка кода не является частью проблемы, это приведет к более широкому аргументу, следует ли проверять код перед передачей или проверять после приема, что также зависит от типа канала и BW используемого канала. –

+0

Как полоса пропускания и тип канала удаленно влияют на код? Это будет другой уровень стека OSI и не имеет отношения к кодированию на этом уровне. – DevNull

0

Если значения интеграла соответствуют ascii, вы можете просто передать их символам. Символы на самом деле uint8 в C. Поэтому, если у вас есть целые числа, которые соответствуют некоторому ascii, вы можете просто компилятором рассматривать их как таковые.

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