【问题标题】:Check if byte stored as string of bits is set at a given position检查存储为位串的字节是否设置在给定位置
【发布时间】:2014-09-10 12:52:04
【问题描述】:

我有一个代表字节或位串的字符串,例如“10011111”。我想将其转换为位数组并检查是否在任何给定位置设置了位,例如在位置 3。 当我尝试将该字符串转换为字节时,它给了我一个 “对于无符号字节,值要么太大要么太小。”转换.ToByte(阅读器[1].ToString())。 reader[1].ToString() 的值 = "11111111"。

请帮忙。

【问题讨论】:

    标签: c# byte bits


    【解决方案1】:

    您应该明确放置 base,在您的情况下为 2:

     Byte result = Convert.ToByte(reader[1].ToString(), 2);
    

    【讨论】:

    • @Dimitry Bychenko 啊非常感谢。
    【解决方案2】:

    试试这个方法

    string x = "111111000";
    
    var cd = x.ToCharArray();
    

    然后你可以相应地工作

    【讨论】:

      【解决方案3】:

      Convert.ToByte 使用的转换使用十进制数字系统。使用 Linq 转换为二进制数组的一种简单方法是:

      bool[] array = "101001010101".Select(c => c == '1').ToArray();
      

      或者为了节省内存:

      string str = "1010101001011100";
      var array = new BitArray(str.Length);
      for (int i = 0; i < str.Length; i++)
      {
          array[i] = str[i] == '1';
      }
      

      或者只使用字符串本身:

      bool isSet = str[3] == '1';
      

      【讨论】:

        猜你喜欢
        • 2022-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-13
        • 1970-01-01
        • 1970-01-01
        • 2019-02-21
        • 1970-01-01
        相关资源
        最近更新 更多