如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的不可打印字符转换成16进制,此处提供一个函数供使用:
void printhex(unsigned char *src,int len)
{
if(src=/article/=NULL/index.html)
{
return;
}
if(len>(1024*1024*3-1))
{
return;
}
char x[1024*1024*3]={0};
int i=0;
for(i=0;i<len;i++)
{
char tmp[10]={0};
if(isprint(src[i]))
{
snprintf(tmp,8,"%c",src[i]);
strcat(x,tmp);
}else
{
snprintf(tmp,8,"(%X)",src[i]);
strcat(x,tmp);
}
}
printf("%s",x);
return;
}
通过这个函数,我们可以方便地在控制台打印出二进制文件的内容并加以分析,如果为16进制则表示为不可打印字符,如果为可打印字符则直接显示。