我从某处获取此代码以将十六进制字符串转换为普通字符串。但是我不明白这一点。有人可以解释一下吗?在此字符串中,第一行从字符串中每隔两个字符将其转换为字节。但是,我不明白为什么他们只将数组分配给字节数组的一半长度?
有时也会出错,例如,如果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);
}
这是因为.Where(x => x % 2 == 0)
仅将输入字符串过滤为仅具有偶数索引的那些值,因此输出将具有原始值的一半。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句