c - 在十六进制数组中打印字符缓冲区

标签 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(%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/

相关文章:

c - 二维动态数组未初始化 - 函数 C 的参数

c - 如何在宏中使用##?

c++ - 链接器错误,使用 g++ 链接到 gcc 编译的库,未定义对该函数的引用

c - 为什么 nop 不占用一个时钟周期

c - 用里面的结构类型初始化一个结构

c - 将结构数组作为结构的成员

android - 如何为android实现mbtowc? (或者,理想情况下,如何不这样做?)

c - 在C中生成1000字节的十六进制数

c - 如何在c中从字符串中分离和存储元素?

c - 如何排除 Asterisk 的套接字连接故障