简体   繁体   English

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

[英]In C#, how do I convert an array of bytes into a string of hex numbers?

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

BitConverter.ToString http://msdn.microsoft.com/en-us/library/system.bitconverter.tostring.aspx BitConverter.ToString http://msdn.microsoft.com/zh-cn/library/system.bitconverter.tostring.aspx

You'll get hyphens between bytes in the string, but they are easily removed. 您会在字符串的字节之间得到连字符,但是很容易删除它们。

This should work... BitConverter is better, but this gives you more control (no hyphens) and you can get fancy with lambdas if you so wished :) 这应该可以工作... BitConverter更好,但这可以为您提供更多控制(没有连字符),并且如果您愿意的话,您可以喜欢lambda :)

 public string byteToHex(byte[] byteArray) {
    StringBuilder result = new StringBuilder();
    foreach (byte b in byteArray) {
        result.AppendString(b.ToString("X2"));
    }
    return result.ToString();
 }

Here's an extension I use when I need lowercase hex. 这是我需要小写十六进制时使用的扩展名。 eg Facebook requires lowercase for signing POST data. 例如,Facebook需要小写字母来签名POST数据。

    private static string ToLowerCaseHexString(this IEnumerable<byte> hash)
    {
        return hash
            .Select(b => String.Format("{0:x2}",
                                       b))
            .Aggregate((a, b) => a + b);
    }

Might be quicker using a StringBuilder over linq .Aggregate, but the byte arrays I pass are short. 在linq .Aggregate上使用StringBuilder可能会更快,但是我传递的字节数组很短。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM