首页 > 代码库 > Linux c字符串中不可打印字符转换成16进制
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=http://www.mamicode.com/=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进制
Linux c字符串中不可打印字符转换成16进制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。