0

次のメソッドを 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 の経験がありません。ありがとう!

4

2 に答える 2

0

この変換は自分で行う必要があります。for明らかに、それをループ に変換したいと思うでしょう。Enumerable.Range基本的int[]に、ループする配列を提供します。その後、はチェックにWhere相当し、は から部分文字列へ、最後に への変換であり、最後に、おそらくそれらをループ外で宣言された に追加することによって、すべてを配列に詰め込みます。(そして、完了したら、リストを呼び出すことができます)ifSelectintbyteList<byte>ToArray

私は完全な答えを提供することができますが、この種の演習はあなたに任せておくのが最善であり、そこから学ぶことができると思います.

于 2012-05-02T02:49:39.130 に答える
0
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;
}
于 2012-05-02T02:54:06.550 に答える