【问题标题】:Convert Hex string to normal String in C#在 C# 中将十六进制字符串转换为普通字符串
【发布时间】: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


    【解决方案1】:

    这是因为.Where(x => x % 2 == 0) 将输入字符串过滤为仅具有偶数索引的值,因此输出的长度将是原始字符串的一半。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 2016-01-01
      • 2018-01-31
      • 2022-07-22
      • 2015-07-28
      • 2021-04-28
      相关资源
      最近更新 更多