您好,我正在使用 digi dynamic c。我正在尝试将其转换为字符串

char readingreg[4];
readingreg[0] = 4a;
readingreg[1] = aa;
readingreg[2] = aa;
readingreg[3] = a0;

目前,当我执行 printf 语句时,它必须是这样的:
printf("This is element 0: %x\n", readingreg[0]);

但我想要这个字符串,所以我可以使用这样的 printf 语句
  printf("This is element 0: %s\n", readingreg[0]);

我本质上是通过 TCP/IP 端口发送 readingreg 数组,为此我需要将它作为字符串。我似乎无法将其转换为字符串。谢谢你的帮助。
此外,如果有人能告诉我如何一次处理每个元素而不是整个数组,那也没关系,因为只有 4 个元素。

最佳答案

0xaa 在普通 char 签名时溢出,使用 unsigned char :

#include <stdio.h>

int main(void)
{
    unsigned char readingreg[4];
    readingreg[0] = 0x4a;
    readingreg[1] = 0xaa;
    readingreg[2] = 0xaa;
    readingreg[3] = 0xa0;
    char temp[4];

    sprintf(temp, "%x", readingreg[0]);
    printf("This is element 0: %s\n", temp);
    return 0;
}

10-07 18:20