我在一个项目中有以下代码,write
是packet
的ascii表示形式的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()
来获取输出
答案 0 :(得分:2)
这些是ASCII codes字符:31是'1',33是'3'等等.0D和0A是终止的新行字符,也称为'\ r'和'\ n',分别。因此,如果您将值转换为字符,则可以直接打印出来,例如printf
使用%c
或%s
格式代码。您可以从链接的表中查看,您发布的值确实代表“13176”: - )