以hex数组打印char缓冲区

我正在读取缓冲区中的512个字符,并希望以hex显示它们。 我尝试了以下方法,但它只是始终输出相同的值,尽管应该通过网络接收不同的值。

char buffer[512]; bzero(buffer, 512); n = read(connection_fd,buffer,511); if (n < 0) printf("ERROR reading from socket"); printf("Here is the message(%d): %x\n\n", sizeof(buffer), buffer); 

这是否有可能我输出缓冲区数组的地址,而不是其内容? C中是否有一个简单的方法可以执行此任务,还是需要编写自己的子程序?

这将读取相同的512字节缓冲区,但在输出时将每个字符转换为hex:

 char buffer[512]; bzero(buffer, 512); n = read(connection_fd,buffer,511); if (n < 0) printf("ERROR reading from socket"); printf("Here is the message:n\n"); for (int i = 0; i < n; i++) { printf("%02X", buffer[i]); } 

这不是C的工作方式。 如果有的话,您正在打印buffer数组的地址。

您将需要编写一个循环缓冲区中每个字节的子例程,并将其打印为hex。

如果你真的希望别人帮助你,我会建议你开始接受一些答案。

要以hex显示字符,您只需要正确的格式特定程序,并且需要遍历缓冲区:

 //where n is bytes back from the read: printf("Here is the message(size %d): ", n); for(int i = 0; i 

您使用的代码是打印缓冲区的地址,这就是为什么它没有为您改变的原因。

既然你已经有一段时间了,如果你想看到格式化为0xNN每个字节,你也可以使用%#x格式:

 for(int i = 0; i 

得到类似的东西:

 0x10 0x4 0x44 0x52...