如何将以下方法转换为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的经验。谢谢!
答案 0 :(得分:0)
您应该可以自己进行此转换。显然你会想把它转换成for
循环。 Enumerable.Range
本质上提供了一个int[]
数组,可以在其上循环。之后,Where
等同于if
项检查,Select
是从int
到子字符串的转换,最后转换为byte
,最后一次,你把所有这些都填充到数组中,可能是将它们添加到循环外声明的List<byte>
。 (当你完成后,你可以在列表上拨打ToArray
)
我可以提供一个完整的答案,但我认为这种锻炼最好留给你,这样你就可以从中学习。
答案 1 :(得分: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;
}