c# – 如何将字节数组转换为十六进制字符串,反之亦然?

这可能是一个常见的问题在互联网上,但我找不到一个答案,整洁地解释了如何将字节数组转换为十六进制字符串,反之亦然。
最佳答案
或者:

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();
}

要么:

public static string ByteArrayToString(byte[] ba)
{
  string hex = BitConverter.ToString(ba);
  return hex.Replace("-","");
}

还有更多的变种,例如here

反向转换将如下所示:

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;
}

使用子字符串是与Convert.ToByte组合的最佳选项。有关详细信息,请参阅this answer。如果你需要更好的性能,你必须避免Convert.ToByte,然后才能删除SubString。

转载注明原文:c# – 如何将字节数组转换为十六进制字符串,反之亦然? - 代码日志