Цикл через шестнадцатеричную переменную в C

У меня есть следующий код в проекте это writeпредставление ASCII 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 (если это - даже шестнадцатеричное число),

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

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

1
задан jps 17 May 2010 в 20:19
поделиться

1 ответ

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

2
ответ дан 3 September 2019 в 00:29
поделиться