优秀的编程知识分享平台

网站首页 > 技术文章 正文

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

nanyue 2024-08-08 18:55:17 技术文章 13 ℃

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);
最近发表
标签列表