在C#中,将字节数组转换为十六进制数字串的最整洁方法是什么?
答案 0 :(得分:2)
BitConverter.ToString http://msdn.microsoft.com/en-us/library/system.bitconverter.tostring.aspx
你会在字符串中的字节之间得到连字符,但很容易删除它们。
答案 1 :(得分:2)
这应该有效... BitConverter更好,但是这会给你更多的控制(没有连字符),如果你愿意的话,你可以使用lambdas:)
public string byteToHex(byte[] byteArray) {
StringBuilder result = new StringBuilder();
foreach (byte b in byteArray) {
result.AppendString(b.ToString("X2"));
}
return result.ToString();
}
答案 2 :(得分:1)
这是我在需要小写十六进制时使用的扩展。例如Facebook要求签署POST数据需要小写。
private static string ToLowerCaseHexString(this IEnumerable<byte> hash)
{
return hash
.Select(b => String.Format("{0:x2}",
b))
.Aggregate((a, b) => a + b);
}
使用StringBuilder可能会比linq .Aggregate更快,但我传递的字节数组很短。