将位串转换为char

时间:2014-03-26 06:31:25

标签: c# string binary char

我正在尝试将位字符串转换为ASCII字符8位(每个8位= 1个ASCII字符)。

        public string BitsToChar(string InpS)
        {
            string RetS = "";
            for (int iCounter = 0; iCounter < InpS.Length / 8; iCounter++)
                RetS = System.String.Concat(RetS, (char)Convert.ToByte(InpS.Substring(iCounter * 8, 8)), 2);                
            return RetS;
        }

抛出System.OverflowException:对于无符号字节,值太大或太小。

对于我来说,如果二进制字符串的8位部分对于8位字节类型来说太小或太大都不清楚。

有什么想法吗?谢谢。

3 个答案:

答案 0 :(得分:1)

尝试类似的东西:

    private static Char ConvertToChar(String value) {
      int result = 0;

      foreach (Char ch in value)
        result = result * 2 + ch - '0';

      return (Char) result;
    }

    public string BitsToChar(string value) {
      if (String.IsNullOrEmpty(value))
        return value;

      StringBuilder Sb = new StringBuilder();

      for (int i = 0; i < value.Length / 8; ++i)
        Sb.Append(ConvertToChar(value.Substring(8 * i, 8)));

      return Sb.ToString();
    }

...

   String result = BitsToChar("010000010010000001100010"); // <- "A b"

答案 1 :(得分:0)

做这样的事情

public string BitsToChar(string InpS)
{
  string RetS = "";
  foreach (char c in InpS)
  {
     RetS = RetS + System.Convert.ToInt32(c);
  }

  return RetS;
}

答案 2 :(得分:0)

尝试类似的东西:

    public static string BitsToChar(string bitString)
    {
        var retString = new StringBuilder();

        foreach (Match match in Regex.Matches(bitString, "[01]{8}")) // 8 is size of bits
        {
            retString.Append((Char)Convert.ToByte(match.Value, 2));
        }

        return retString.ToString();
    }