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进制

时间: 2024-11-08 17:26:15

Linux c字符串中不可打印字符转换成16进制的相关文章

将16进制字符串转换成16进制数据

var tb1 = Tb1.Text; if (string.IsNullOrEmpty(tb1)) { tb1 = "0000"; } var s1 = tb1.Substring(0, 2); var int_1 = Convert.ToInt32(s1, 16); var s2 = tb1.Substring(2, 2); var int_2 = Convert.ToInt32(s2, 16); var bt1 = Convert.ToByte(int_1); var bt2 =

ip地址转换成16进制long

<span style="font-size:18px;">public class IpUtil { /** * ip地址转换成16进制long * @param ipString * @return */ public static Long ipToLong(String ipString) { Long[] ip = new Long[4]; int pos1= ipString.indexOf("."); int pos2= ipString.

C#把汉字转换成16进制(HEX)并向串口发送数据

报警器实例:(有发送,无返回获取) 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO.Ports; 6 using System.Text.RegularExpressions; 7 using System.Windows.Forms; 8 9 namespace ZKJFJK 10 { 11 /*** 12 报警器语音输

Java中将10进制转换成16进制

import java.util.Scanner; public class Decimal2HexConversion {     public static void main(String[] args){         Scanner input = new Scanner(System.in);         System.out.print("输入一个十进制数: ");         int decimal = input.nextInt();         Sys

给出一个字符串,将其每一个字符表示成16进制表示,要求每个十六进制为8位数

#include<iostream> #include<string.h> using namespace std; int countnum(int x) { int res=0; while(x) { x/=10; res++; } return res; } int main() { string s; while(cin>>s) { int n=s.size(); for(int i=0;i<n;i++) { int x=(int)s[i]; int c=

本大神教你用PHP把文本内容转换成16进制数字,进行加密

<?php $a="杨波"; $b = bin2hex($a); echo $a."<br />"; $c = pack("H*",$b); echo $c."<br />"; ?> 字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字

object-c将RGB颜色转换成16进制HTML颜色

-(void)color:(NSString *) red andGreen:(NSString*) green andBule:(NSString*) bule{ NSInteger Red = [red integerValue]; NSInteger Green = [green integerValue]; NSInteger Bule = [bule integerValue]; NSInteger colorsize = Red<<16 | Green << 8 | B

java-pfx文件转换成16进制内容

public static void main(String[] args) throws Exception { String path = "D://111.pfx"; InputStream in = new FileInputStream(new File(path)); ByteArrayOutputStream out = new ByteArrayOutputStream(); KeyStore keyStore = KeyStore.getInstance("

将10进制整数转换成16进制整数输出

题意: 把十进制整数转换为十六进制,格式为0x开头,10~15由大写字母A~F表示. Input 每行一个整数x,0<= x <= 2^31. Output 每行输出对应的八位十六进制整数,包括前导0. 案例输出: Sample Input 0 1023 Sample Output 0x00000000 0x000003FF 注意: 用cin>>输入时无需担心Output Limint Exceeded,而用scanf输入应该加上!=EOF. 代码如下: 1 #include<