以ASCII格式打印十六进制数组

时间:2014-02-05 11:12:41

标签: c gcc bitwise-operators

我的c程序中有一个字节数组

unsigned char global_buffer[5]={0x0A,0x21,0x01,0x01,0x01};

当我尝试在超级终端中打印此数组时,它以ASCII格式显示,因此以未知字符格式打印。如何将其打印为

A,21,1,1,1

这样数组必须是这样的{'A','21','1','1','1'}。

如何使用位移来实现这一目标?因为我在微控制器上工作可以使用%X等

2 个答案:

答案 0 :(得分:3)

您必须在"%X"中使用printf()

#include <stdio.h>
#include <string.h>

unsigned char global_buffer[5]={0x0A,0x21,0x01,0x01,0x01};

main()
{
   int i;
   for(i=0;i<5;i++) {
       printf("%X, ", global_buffer[i]);
   }
   printf("\n");
}

答案 1 :(得分:0)

使用%x和%X打印十六进制值。 考虑一下这个例子

int hex = 0X0A;
printf("%x\n",hex);  o/p a //for small letters
printf("%X" , hex); o/p A // for capital letters