c - 在一行中打印十六进制数组的所有元素

标签 c arrays hex

我在 C char arr[100] 中有一个数组,其中的每个元素都可以包含一个任意的十六进制值(甚至是 0)。我想以某种方式能够在一行中打印这个数组,例如:

arr[0] = 0x11
arr[1] = 0x00
...
arr[99] = 0x22

输出应该是:

0x11 0x00 ..... 0x22

如果我将 printf()%s 一起使用,它将在 0 处停止。我不想使用 for循环使用 %x 一个一个地打印每个字符。由于我正在使用的系统,我对可以使用的 API 有限制。它不允许 printf()。它有一个函数 print(),它在每次打印后添加一个新行,但接受格式字符串,如 %x、%s、%d 等。如 printf ()

如何实现需求?

最佳答案

您可以使用sprintf 复制到缓冲区,然后打印缓冲区

#include <stdio.h>

int main(void)
{
    char arr[] = { 0x11, 0x00, 0x22, 0xFF };

    int count = sizeof(arr);

    //each element needs 5 bytes
    char *buf = malloc(5 * count + 1);

    for(int i = 0; i < count; i++)
        sprintf(buf + i * 5, "0x%02X ", arr[i] & 0xFF);

    //optional: remove the last blank space
    buf[5 * count - 1] = 0;

    printf("[%s]\n", buf);//or whichever print function available

    return 0;
}

关于c - 在一行中打印十六进制数组的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52885298/

相关文章:

c - 如何在 C 中使用按位将数字转换为字母数字?

c - 是否有任何普通理由使用 open() 而不是 fopen()?

c - 查找共享库函数中定义的局部变量的地址

javascript - 如何仅返回数组中匹配/过滤的字符串?

arrays - excel用数组压缩公式

java - 这是一个有效的十六进制值吗?

ios - 如何修复此 YCrCb -> RBG 转换公式?

javascript - JS - 在其中一个对象上添加新属性和值

database - Oracle:如何在 Oracle SQL 中将十六进制转换为十进制?

c++ - 如何在 C++ 中将十六进制数字转换为二进制?