【发布时间】:2014-07-01 08:41:27
【问题描述】:
我从某个地方得到了这段代码,用于将十六进制字符串转换为普通字符串。 但我无法理解这一点。有人可以解释一下吗? 在这个字符串中,第一行从字符串中取出每两个字符并将其转换为字节。 但是,我不明白他们为什么将数组分配给只有一半长度的字节数组?
有时它也会出错,即如果 Inputstring 长度为 350,字节长度为 175,char 长度为 87.5,char 数组仅分配给 87,这不足以容纳字节数组中的所有字符。
public static string HextoString(string InputText)
{
byte[] bb = Enumerable.Range(0, InputText.Length)
.Where(x => x % 2 == 0)
.Select(x => Convert.ToByte(InputText.Substring(x, 2), 16))
.ToArray();
//return Convert.ToBase64String(bb);
char[] chars = new char[bb.Length / sizeof(char)];
System.Buffer.BlockCopy(bb, 0, chars, 0, bb.Length);
return new string(chars);
}
【问题讨论】:
标签: c# ienumerable