本文由 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