【问题标题】:In C#, how do I convert an array of bytes into a string of hex numbers?在 C# 中,如何将字节数组转换为十六进制数字字符串?
【发布时间】:2011-01-10 06:04:10
【问题描述】:

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

【问题讨论】:

标签: c# hex


【解决方案1】:

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

字符串中的字节之间会出现连字符,但它们很容易被删除。

【讨论】:

    【解决方案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();
     }
    

    【讨论】:

    • 这里的 StringBuilder 会快得多。
    【解决方案3】:

    这是我在需要小写十六进制时使用的扩展。例如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 可能会更快,但我传递的字节数组很短。

    【讨论】:

      猜你喜欢
      • 2019-03-07
      • 1970-01-01
      • 2013-01-14
      • 1970-01-01
      • 2017-06-17
      • 2011-09-15
      • 2012-04-11
      • 2021-10-31
      相关资源
      最近更新 更多