C#实现字符串、字节数组、16进制字符串之间的相互转换

C#实现字符串、字节数组、16进制字符串之间的相互转换

编码文章call10242025-02-01 3:40:1534A+A-

C#可以使用内置的方法和构造函数来实现字符串、字节数组和16进制字符串之间的相互转换。以下是一些示例代码:

**字符串转换为字节数组**

string str = "Hello World";
byte[] byteArray = Encoding.UTF8.GetBytes(str);

在这个例子中,我们使用了`Encoding.UTF8`类的`GetBytes()`方法将字符串转换为UTF-8编码的字节数组。

**字节数组转换为字符串**

byte[] byteArray = { 72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100 };
string str = Encoding.UTF8.GetString(byteArray);

在这个例子中,我们使用了`Encoding.UTF8`类的`GetString()`方法将字节数组转换为UTF-8编码的字符串。

**字符串转换为16进制字符串**

string str = "Hello World";
string hex = BitConverter.ToString(Encoding.UTF8.GetBytes(str));

在这个例子中,我们首先使用`Encoding.UTF8.GetBytes()`方法将字符串转换为字节数组,然后使用`BitConverter.ToString()`方法将字节数组转换为16进制字符串。

**16进制字符串转换为字节数组**

public static byte[] ToBytesFromHexString(this string hexString)
        {
            //以 ' ' 分割字符串,并去掉空字符
            string[] chars = hexString.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            byte[] returnBytes = new byte[chars.Length];
            //逐个字符变为16进制字节数据
            for (int i = 0; i < chars.Length; i++)
            {
                returnBytes[i] = Convert.ToByte(chars[i], 16);
            }
            return returnBytes;
        }

注意,以上转化假定传过来的是类似"68 65 6c 6c 6f 20 57 6f 72 6c 64"这样的16进制格式的字符串

**16进制字符串转换为可读字符串**

基于04,可通过如下代码实现**16进制字符串转换为可读字符串**。

string hex = "68 65 6c 6c 6f 20 57 6f 72 6c 64";
byte[] byteArray = ToBytesFromHexString(hex);
string str = Encoding.UTF8.GetString(byteArray);
点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4