【发布时间】:2011-01-10 06:04:10
【问题描述】:
在 C# 中,将字节数组转换为十六进制数字字符串的最简洁的方法是什么?
【问题讨论】:
-
你是对的,我错过了那个
在 C# 中,将字节数组转换为十六进制数字字符串的最简洁的方法是什么?
【问题讨论】:
BitConverter.ToString http://msdn.microsoft.com/en-us/library/system.bitconverter.tostring.aspx
字符串中的字节之间会出现连字符,但它们很容易被删除。
【讨论】:
这应该可以工作... BitConverter 更好,但这给了你更多的控制权(没有连字符),如果你愿意的话,你可以使用 lambdas :)
public string byteToHex(byte[] byteArray) {
StringBuilder result = new StringBuilder();
foreach (byte b in byteArray) {
result.AppendString(b.ToString("X2"));
}
return result.ToString();
}
【讨论】:
这是我在需要小写十六进制时使用的扩展。例如Facebook 要求使用小写字母对 POST 数据进行签名。
private static string ToLowerCaseHexString(this IEnumerable<byte> hash)
{
return hash
.Select(b => String.Format("{0:x2}",
b))
.Aggregate((a, b) => a + b);
}
在 linq .Aggregate 上使用 StringBuilder 可能会更快,但我传递的字节数组很短。
【讨论】: