Linux c字符串中不可打印字符转换成16进制


本文由 www.169it.com 搜集整理

如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的不可打印字符转换成16进制,此处提供一个函数供使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void  printhex(unsigned  char  *src, int  len)
{
     if (src==NULL)
     {
         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进制则表示为不可打印字符,如果为可打印字符则直接显示。

文章来源:Linux c字符串中不可打印字符转换成16进制


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM