这里主要通过一个数组存了一下简单的16进制,%s是通过ASCII表来进行字符输出的,所以直接输出16进制数会出现乱码。
#include <stdio.h>
#include <string.h>
int main()
{
char data[] = {0xaa, 0xaa , 0xaa , 0xaa , 0x01 , 0x03 , 0x00 , 0x00 , 0xe8 , 0x76 , 0xbe , 0x26 };
/* 我的第一个 C 程序 */
printf("%s\n",data);//此处打印肯定是乱码 %s是以ASCII码的方式进行打印,主要以10进制的来转化成对应的字符
int a=sizeof(data);
printf("date=%d\n",sizeof(data));
printf("a=%d\n",a);
unsigned char tmp[1024]={0};
memcpy((char *)tmp,(char *)data,sizeof(data));
int len=sizeof(data);
printf("len=%d\n",len);
unsigned char buf[1024]={0};
int i=0;
for(i=0;i<len;i++)
{
printf("tmp[%d]=%02x\n",i,tmp[i]);
}
int x=0;
for(x=0;x<a;x++)
{
printf("strlen(buf)=%d\n",strlen((char *)buf));
sprintf((char *)&buf[strlen((char *)buf)],"%02x",(char *)tmp[x]);
printf("buf=%s\n",buf);
}
return 0;
}
输出结果