我正在将 512 个字符读入缓冲区并希望以十六进制显示它们。我尝试了以下方法,但它始终输出相同的值,尽管应该通过网络接收不同的值。
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 字节缓冲区,但在输出时将每个字符 转换为十六进制:
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 - 在十六进制数组中打印字符缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13275258/