在本文中,我们展示了如何将字节数组转换为十六进制字符串。
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
方法,LINQSelect
方法和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 ...
在本文中,我们展示了如何将字节数组转换为十六进制字符串。
列出所有C#教程。