zoukankan      html  css  js  c++  java
  • 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进制

  • 相关阅读:
    CSS之边界塌陷
    不用for loop循环一个读取一个文件
    CSS之毗邻选择器与普通兄弟选择器的区别
    python 一行代码
    Regex Golf 练习记录
    c实现双向链表
    c实现单向链表
    c++实现 String 类
    js获取指定小时日期格式化
    git clone Timed out 解决
  • 原文地址:https://www.cnblogs.com/besty/p/4076331.html
Copyright © 2011-2022 走看看