【问题标题】:Conversion from .NET 3.5 to .NET 2.0从 .NET 3.5 转换到 .NET 2.0
【发布时间】:2012-05-02 02:40:35
【问题描述】:

如何将以下方法转换为 C# 2.0?

    private static string ToHexString(byte[] bytes)
    {
        return string.Join(string.Empty, bytes.Select(x => x.ToString("X2")).ToArray());
    }

    private static byte[] ToByteArray(string hex)
    {
        return Enumerable.Range(0, hex.Length).
                 Where(x => 0 == x % 2).
                 Select(x => Convert.ToByte(hex.Substring(x, 2), 16)).
                 ToArray();
    }

我没有使用 .NET 2.0 的经验。谢谢!

【问题讨论】:

    标签: .net-2.0 c#-2.0


    【解决方案1】:
    void Main()
    {
        string s = ToHexString(new byte[]{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15});
        Console.WriteLine(s);
    
        foreach (byte b in ToByteArray(s))
            Console.WriteLine(b);
    }
    
    private static string ToHexString(byte[] bytes)
    {
        StringBuilder sb = new StringBuilder();
        foreach (byte b in bytes)
            sb.Append(b.ToString("X2"));
        return sb.ToString();
    }
    
    private static byte[] ToByteArray(string hex)
    {
        byte[] b = new byte[hex.Length/2];
        for (int i = 0; i < b.Length; i++)
        {
            b[i] = Convert.ToByte(hex.Substring(i*2,2), 16);
        }
    
        return b;
    }
    

    【讨论】:

      【解决方案2】:

      您应该能够自己进行此转换。显然,您需要将其转换为 for 循环。 Enumerable.Range 本质上提供了一个 int[] 数组,用于循环。之后,Where 等同于 if 检查,Select 是从 int 到子字符串,最后到 byte 的转换,最后,您将所有这些内容填充到数组中,可能通过将它们添加到循环外声明的List&lt;byte&gt; 中。 (完成后可以拨打名单上的ToArray

      我可以提供一个完整的答案,但我认为这种练习最好留给你,这样你就可以从中学习。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-07
        • 2011-02-17
        • 1970-01-01
        • 1970-01-01
        • 2011-08-31
        • 1970-01-01
        • 2011-04-03
        • 1970-01-01
        相关资源
        最近更新 更多