Цикл шестнадцатеричной переменной в C - PullRequest
1 голос
/ 18 мая 2010

У меня есть следующий код в проекте, который write является представлением packet для unix tty:

int written = 0; 
int start_of_data = 3; 
//write data to fifo 
while (length) { 
        if ((written = write(fifo_fd, &packet[start_of_data], length)) == -1) 
{ 
                printf("Error writing to FIFO\n"); 
        } else { 
                length -= written; 
        } 
} 

Я просто хочу взять данные, которые были бы записаны в сокет, и поместить их в переменную. чтобы отладить, я просто пытался printf первая буква / цифра. Я пробовал многочисленные способы заставить его распечатать, но я продолжаю получать шестнадцатеричные формы (я думаю).

Ожидаемый результат: 13176 и шестнадцатеричное значение: 31 33 31 37 36 0D 0A (если это четное шестнадцатеричное значение)

Очевидно, что мои навыки Си не самые острые инструменты в сарае. Любая помощь будет оценена.

обновление: Я использую hexdump(), чтобы получить вывод

1 Ответ

2 голосов
/ 18 мая 2010

Это ASCII коды символов: 31 - «1», 33 - «3» и т. Д. 0D и 0A - завершающие символы новой строки, также известные как «\ r» и «\» n 'соответственно. Поэтому, если вы преобразуете значения в символы, вы можете распечатать их напрямую, например, с printf с использованием кодов формата %c или %s. Как вы можете проверить из таблицы, которую вы указали, введенные вами значения представляют «13176»: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...