c - 在一行中打印十六进制数组的所有元素
问题描述
我在 C 中有一个数组char arr[100]
,其中的每个元素都可能包含一个任意的十六进制值(甚至是 0)。我希望能够以某种方式将这个数组打印在一行中,例如:
arr[0] = 0x11
arr[1] = 0x00
...
arr[99] = 0x22
输出应该是:
0x11 0x00 ..... 0x22
如果我使用printf()
with %s
,它将停在 0 处。我不想使用for
循环来逐个打印每个字符%x
。由于我正在使用的系统,我对可以使用的 API 有限制。它不允许printf()
。它有一个功能print()
,可以在每次打印后添加一个新行,但接受格式字符串,如%x, %s, %d
.like 等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;
}
推荐阅读
- python - 返回所有集群而没有重复项
- java - NoNodeAvailableException[没有配置的节点可用:[{#transport#-1}{OqtopIzTQmOjjLBzr2G_JA}{127.0.0.1}{127.0.0.1:9300}]]
- vue.js - 模板中的VueJS条件类
- c++ - 使用 catch2 进行结构和测试的问题
- javascript - 在 jQuery 中使用 setTimeout
- openmdao - 你如何声明数组 wrt 标量的部分,反之亦然?
- rust - delwin 不删除窗口
- css - 有没有办法创建具有类型组合的嵌套有序列表 - HTML + CSS + WordPress?
- typescript - 打字稿中有没有办法将参数限制为对象的键之一,并且该键具有某种类型?
- javascript - 对 npm test 运行 pre 和 post 命令