在工程实践中,经常会将一些字节信息转换为16进制字符串,以便传递和分享,比如加密密钥信息。在这里提供一段转化示例, 以供交流学习。
将16进制字符串转化为 字节流
public static byte[] HexStringToBytes(string hexStr)
{
if (string.IsNullOrEmpty(hexStr))
{
return new byte[0];
}
if (hexStr.StartsWith("0x"))
{
hexStr = hexStr.Remove(0, 2);
}
var count = hexStr.Length;
if (count % 2 == 1)
{
throw new ArgumentException("Invalid length of bytes:" + count);
}
var byteCount = count / 2;
var result = new byte[byteCount];
for (int ii = 0; ii < byteCount; ++ii)
{
var tempBytes = Byte.Parse(hexStr.Substring(2 * ii, 2), System.Globalization.NumberStyles.HexNumber);
result[ii] = tempBytes;
}
return result;
}
将字节流转化为16进制字符串
public static string BytesTohexString(byte[] bytes)
{
if (bytes == null || bytes.Count() < 1)
{
return string.Empty;
}
var count = bytes.Count();
var cache = new StringBuilder();
cache.Append("0x");
for (int ii = 0; ii < count; ++ii)
{
var tempHex = Convert.ToString(bytes[ii], 16).ToUpper();
cache.Append(tempHex.Length == 1 ? "0" + tempHex : tempHex);
}
return cache.ToString();
}