Linux c字符串中不可打印字符轉換成16進制

本文由 www.169it.com 蒐集整理html

若是一個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進制則表示爲不可打印字符,若是爲可打印字符則直接顯示。spa

文章來源:Linux c字符串中不可打印字符轉換成16進制code

相關文章
相關標籤/搜索