C# 中字节数组与十六进制字符串的相互转换
在编程中,字节数组和十六进制字符串之间的转换是一项常见的任务。本文将介绍如何在 C# 中实现这种转换:
从字节数组转换为十六进制字符串
从 .NET 5 开始,您可以使用内置方法 Convert.ToHexString
来完成此任务:
<code class="language-csharp">string hexString = Convert.ToHexString(byteArray);</code>
从十六进制字符串转换为字节数组
对于反向操作,请使用 Convert.FromHexString
:
<code class="language-csharp">byte[] byteArray = Convert.FromHexString(hexString);</code>
旧版 .NET 版本的替代方法
如果您使用的是旧版 .NET,可以使用以下方法:
<code class="language-csharp">public static string ByteArrayToString(byte[] ba) { StringBuilder hex = new StringBuilder(ba.Length * 2); foreach (byte b in ba) hex.AppendFormat("{0:x2}", b); return hex.ToString(); }</code>
或者:
<code class="language-csharp">public static string ByteArrayToString(byte[] ba) { return BitConverter.ToString(ba).Replace("-", ""); }</code>
反向转换
要将十六进制字符串转换回字节数组,请使用此方法:
<code class="language-csharp">public static byte[] StringToByteArray(string hex) { int NumberChars = hex.Length; byte[] bytes = new byte[NumberChars / 2]; for (int i = 0; i < NumberChars; i += 2) { bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16); } return bytes; }</code>
优化
为了提高性能,您可以考虑使用避免基于字符串转换的替代方法。但是,对于大多数场景,此处介绍的方法应该足够了。
以上是如何在C#中的字节阵列和十六进制字符串之间进行转换?的详细内容。更多信息请关注PHP中文网其他相关文章!