在C#中,如何将字节数组转换为十六进制数字串?

时间:2010-01-28 02:53:43

标签: c# hex

在C#中,将字节数组转换为十六进制数字串的最整洁方法是什么?

3 个答案:

答案 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更快,但我传递的字节数组很短。