将字符串转换成16进制

简介: 原文:将字符串转换成16进制1、将普通字符串转换成16进制的字符串。 点击进入推荐链接 class Program { static void Main(string[] args) { string str = "Hello,C#!!!"; //调用。
原文: 将字符串转换成16进制

1、将普通字符串转换成16进制的字符串。

点击进入推荐链接

class Program
{
    static void Main(string[] args)
    {
        string str = "Hello,C#!!!";
        //调用。
        string result = StringToHex16String(str);
        Console.WriteLine(string.Format("将普通字符串:{0}转换成16进制字符串是:{1}", str, result));
        Console.ReadKey();
    }    
    /// <summary>
    /// 此方法用于将普通字符串转换成16进制的字符串。
    /// </summary>
    /// <param name="_str">要转换的字符串。</param>
    /// <returns></returns>
    public static string StringToHex16String(string _str)
    {
        //将字符串转换成字节数组。
        byte[] buffer = System.Text.Encoding.UTF8.GetBytes(_str);
        //定义一个string类型的变量,用于存储转换后的值。
        string result = string.Empty;
        for (int i = 0; i < buffer.Length; i++)
        {
            //将每一个字节数组转换成16进制的字符串,以空格相隔开。
            result += Convert.ToString(buffer[i], 16) + " ";
        }
        return result;
    }
}

转换结果是:

2、将16进制的字符串转换成普通字符串。

class Program
{
    static void Main(string[] args)
    {
        string hex16String = "48 65 6c 6c 6f 2c 43 23 21 21 21";
        string result = Hex16StringToString(hex16String);
        Console.WriteLine("将16进制字符串:{0}转换成普通字符串是:{1}", hex16String, result);
        Console.ReadKey();
    }

    /// <summary>
    /// 此方法用于将16进制的字符串转换成普通字符串。
    /// </summary>
    /// <param name="_hex16String">要转换的16进制的字符串。</param>
    /// <returns></returns>
    private static string Hex16StringToString(string _hex16String)
    {
        string result = string.Empty;
        //以空格分割字符串。
        string[] chars = _hex16String.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
        //声明一个字节数组,其长度等于分割的字符串的长度。
        byte[] buffer = new byte[chars.Length];
        for (int i = 0; i < buffer.Length; i++)
        {
            //将chars数组中的元素转换成字节数组。
            buffer[i] = Convert.ToByte(chars[i], 16);
        }
        //将字节数组转换成字符串。
        result = System.Text.Encoding.UTF8.GetString(buffer);
        //返回。
        return result;
    }
}

 效果图:

3、将16进制的字符串转换成16进制的字节数组。

class Program
{
    static void Main(string[] args)
    {
        string hex16String = "48 65 6c 6c 6f 2c 43 23 21 21 21";
        //引用。
        byte[] bytes = Hex16StringToHex16Byte(hex16String);
    }

    /// <summary>
    /// 此方法用于将16进制的字符串转换成16进制的字节数组
    /// </summary>
    /// <param name="_hex16ToString">要转换的16进制的字符串。</param>
    public static byte[] Hex16StringToHex16Byte(string _hex16String)
    {
        //去掉字符串中的空格。
        _hex16String = _hex16String.Replace(" ", "");
        if (_hex16String.Length / 2 == 0)
        {
            _hex16String += " ";
        }
        //声明一个字节数组,其长度等于字符串长度的一半。
        byte[] buffer = new byte[_hex16String.Length / 2];
        for (int i = 0; i < buffer.Length; i++)
        {
            //为字节数组的元素赋值。
            buffer[i] = Convert.ToByte((_hex16String.Substring(i * 2, 2)), 16);
        }
        //返回字节数组。
        return buffer;
    }
}

效果图:

 4、将16进制的字节数组转换成16进制的字符串。

class Program
{
    static void Main(string[] args)
    {
        string hex16String = "48 65 6c 6c 6f 2c 43 23 21 21 21";
        byte[] bytes = Hex16StringToHex16Byte(hex16String);
        string result = Hex16ByteToHex16String(bytes);
        Console.WriteLine(string.Format("转换成16进制的字符串是:{0}", result));
        Console.ReadKey();
    }

    /// <summary>
    /// 此方法用于将16进制的字节数组转换成16进制的字符串。
    /// </summary>
    /// <param name="_hex16Byte">要转换的16进制的字节数组。</param>
    /// <returns></returns>
    public static string Hex16ByteToHex16String(byte[] _hex16Byte)
    {
        string result = string.Empty;
        //如果字节数组不为空。
        if (_hex16Byte != null)
        {
            for (int i = 0; i < _hex16Byte.Length; i++)
            {
                //将每一个字节数组转换成16进制string类型的字符串,用空格分隔开。
                result += _hex16Byte[i].ToString("X2") + " ";
            }
        }
        return result;
    }
}

效果图:

 

5、将字符串转换成16进制。

class Program
{
    static void Main(string[] args)
    {
        string str = "自由!!!";
        string result = StringTo16Hex(str, Encoding.UTF8, true);
        Console.WriteLine(string.Format("将字符串:{0}转换成16进制后是:{1}", str, result));
        Console.ReadKey();
    }

    /// <summary>
    /// 此方法用于将字符串转化成16进制。
    /// <param name="_str">要转换的字符串。</param>
    /// <param name="_encode">编码格式(UTF-8、gb2312)</param>
    /// <param name="_isHaveSpace">是否用空格分隔</param>
    // <returns></returns>
    public static string StringTo16Hex(string _str, Encoding _encode,bool _isHaveSpace)
    {
        string result = string.Empty;
        if (_str.Length / 2 != 0)
        {
            _str += " ";
        }
        //将字符串转换成字节数组。
        byte[] buffer = _encode.GetBytes(_str);
        for (int i = 0; i < buffer.Length; i++)
        {
            result += string.Format("{0:X}", buffer[i]);
            if (_isHaveSpace && (i != buffer.Length - 1))
            {
                //result += " ";
                //或者写成以下这种。
                result += string.Format("{0}", " ");
            }
        }
        return result;
    }
}

效果图:

6、将16进制转换成字符串。

class Program
{
    static void Main(string[] args)
    {
        string str = "自由!!!";
        string result = StringTo16Hex(str, Encoding.UTF8, true);
        Console.WriteLine();
        Console.WriteLine(string.Format("将字符串:{0}转换成16进制后是:{1}", str, result));
        Console.WriteLine("---------------------------------");
        string result2 = Hex16ToString(result,Encoding.UTF8);
        Console.WriteLine(string.Format("将16进制:{0} 转换成字符串是:{1}", result, result2));
        Console.ReadKey();
    }

    /// <summary>
    /// 此方法用于将16进制转换成字符串。
    /// </summary>
    /// <param name="_str">要转换的16进制。</param>
    /// <param name="_encode">编码的格式。</param>
    /// <returns></returns>
    public static string Hex16ToString(string _str, Encoding _encode)
    {
        if (_str == null)
        {
            return "";
        }
        //去掉空格、逗号、斜杠
        _str = _str.Replace(",", "");
        _str = _str.Replace("\n", "");
        _str = _str.Replace("\\", "");
        _str = _str.Replace(" ", "");
        if (_str.Length % 2 == 0)
        {
            _str += "20"; //空格
        }
        //新建字节数组。
        byte[] buffer = new byte[_str.Length / 2];
        for (int i = 0; i < buffer.Length; i++)
        {
            try
            {
                //每两个字符是一个 byte。   
                buffer[i] = byte.Parse(_str.Substring(i * 2, 2),
                System.Globalization.NumberStyles.HexNumber);
            }
            catch (Exception ex)
            {
                //错误异常处理。
                throw ex; 
            }               
        }
        //返回
        return _encode.GetString(buffer, 0, buffer.Length);
    }
}

效果图:

参考博客链接:https://blog.csdn.net/zdhlwt2008/article/details/52749658

点击进入推荐链接

End! 

目录
相关文章
|
7月前
|
C语言
Day6 不要二、把字符串转换成整数
Day6 不要二、把字符串转换成整数
62 0
|
7月前
|
C#
C# | [字节数组]与[16进制字符串]互相转换 - CodePlus系列
十六进制(简写为hex或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F表示10~15,这些称作十六进制数字。 我们在做开发的过程中,经常需要将收发数据打印出来检查。如何简单高效的一行代码转换字节数组到字符串呢?我们来一起看看吧!
152 0
C# | [字节数组]与[16进制字符串]互相转换 - CodePlus系列
|
7月前
|
存储 C++
(C++)把字符串转换成整数
(C++)把字符串转换成整数
73 0
16进制和字符串互转 #65
16进制和字符串互转 #65
127 1
常用字节转换(字符串转16进制,16进制转字符串)
常用字节转换(字符串转16进制,16进制转字符串)
|
存储 机器学习/深度学习 算法
C#实现十六进制和十进制相互转换【及不同进制表示】
在程序中,十六进制的表示形式通常为字符串;而十进制则为数字整型(本质的内存存储都是01二进制)。数字的进制表示一般使用的不多,通常最大的需求是进制之间的相互转换。C#中提供了内置的转换方法...
681 0
C#实现十六进制和十进制相互转换【及不同进制表示】
|
C++
C++中将数字转换为字符串
C++中将数字转换为字符串
142 0
C++中将数字转换为字符串
十六进制字符串
十六进制字符串
124 0
|
Java 开发者 索引
进制转换: 十进制转换成其他进制(一)
进制转换: 十进制转换成其他进制(一)
274 0
进制转换: 十进制转换成其他进制(一)
十六进制数组转换成ASCII码
十六进制数组转换成ASCII码
248 0