C# 字节数组转换为十六进制字符串
最后修改于 2023 年 7 月 5 日
在本文中,我们将展示如何将字节数组转换为十六进制字符串。
byte 类型是 C# 中一个简单的数值值类型。byte 类型主要用于 IO 操作,例如处理文件和网络连接。
十六进制是一种以 16 为基数的计数系统。它使用 16 个唯一的字母数字符号:数字 0 到 9 和字母 A-F 来表示值 10 到 15。
十六进制系统简化了二进制值的表示,因为它缩短了数字的位数;一个十六进制数字相当于四个二进制数字。
Encoding.ASCII.GetBytes 方法将 ASCII 字符串转换为字节数组。
十六进制格式说明符
十六进制格式说明符 X 或 x 将数字转换为十六进制数字的字符串。字符串可以是大小写。
我们还可以添加精度说明符,该说明符指示结果字符串中所需的最小位数。 如果需要,数字将用零填充到左侧,以生成精度说明符给出的位数。
int n = 2350;
Console.WriteLine(n.ToString("X"));
Console.WriteLine(n.ToString("x"));
Console.WriteLine(n.ToString("X2"));
Console.WriteLine(n.ToString("X4"));
Console.WriteLine(n.ToString("X8"));
该程序使用各种十六进制格式说明符将整数打印为十六进制值。
$ dotnet run 92E 92e 92E 092E 0000092E
下一个示例将字符串转换为字节数组,然后将该数组转换为十六进制字符串。
using System.Text;
string msg = "an old falcon";
byte[] data = Encoding.ASCII.GetBytes(msg);
string hex = string.Join(" ", data.Select(x => x.ToString("X2")));
Console.WriteLine(hex);
该程序使用 string.Join 方法、LINQ Select 方法和 ToString 方法。
$ dotnet run 61 6E 20 6F 6C 64 20 66 61 6C 63 6F 6E
C# Convert.ToHexString
Convert.ToHexString 方法将 8 位无符号整数的数组转换为其等效的字符串表示形式,该字符串使用大写十六进制字符进行编码。
using System.Text; string msg = "an old falcon"; byte[] data = Encoding.ASCII.GetBytes(msg); string hex = Convert.ToHexString(data); Console.WriteLine(hex);
该程序使用 Convert.ToHexString 将字节数组转换为十六进制字符串。
$ dotnet run 616E206F6C642066616C636F6E
C# BitConverter.ToString
BitConverter.ToString 方法将指定字节数组的每个元素的数值转换为其等效的十六进制字符串表示形式。
十六进制对用连字符分隔。
using System.Text;
string msg = "an old falcon";
byte[] data = Encoding.ASCII.GetBytes(msg);
string hex = BitConverter.ToString(data);
Console.WriteLine(hex);
string hex2 = hex.Replace('-', ' ');
Console.WriteLine(hex2);
该程序使用 BitConverter.ToString 将字节数组转换为十六进制字符串。我们还使用 Replace 删除连字符。
$ dotnet run 61-6E-20-6F-6C-64-20-66-61-6C-63-6F-6E 61 6E 20 6F 6C 64 20 66 61 6C 63 6F 6E
C# 二进制文件转换为十六进制字符串
File.ReadAllBytes 打开一个二进制文件,将文件的内容读取到字节数组中,然后关闭该文件。
var path = "favicon.ico";
byte[] data = File.ReadAllBytes(path);
int i = 0;
foreach (byte c in data)
{
Console.Write("{0:X2} ", c);
i++;
if (i % 10 == 0)
{
Console.WriteLine();
}
}
该示例读取一个 favicon.ico 二进制文件。数据以十六进制格式打印到控制台。
$ dotnet run 00 00 01 00 01 00 10 10 00 00 00 00 00 00 68 05 00 00 16 00 00 00 28 00 00 00 10 00 00 00 20 00 00 00 01 00 08 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 FF FF FF 00 4D 45 3D 00 00 00 00 00 00 00 ...
在本文中,我们展示了如何将字节数组转换为十六进制字符串。
来源
BitConverter.ToString 方法 - 语言参考
作者
列出所有 C# 教程。