如何将布尔数组转换为字符变量?

4

我有一个布尔数组,其中包含一些表示ASCII值的值:

bool[] myBoolReceived = new bool[8];

我尝试将其转换为字符,以便可以将其添加到一个保存字符的列表中。
myReceivedMessage = new List<char>(); 

我尝试使用Convert.ToChar方法,但好像不起作用。


一个 bool 变量可以存储两个值:truefalse。我不确定你所说的“将 bool 数组转换为 char 变量”的意思是什么。你能否请澄清一下? - Emz
@Emz 对我来说,这部分似乎相当清晰:8位整数值的8位存储为数组的单独元素。有很多事情我不太清楚(例如为什么不直接使用“byte”,为什么使用8位当ASCII是7位字符集,位的顺序是什么),这使得问题难以回答。 - user743382
@Emz 他可能是指bool数组表示字节中的位。 - cbr
我不再争论,那么解决这个问题应该相当简单,然而有很多可以用来解决它的方案。 - Emz
@AlonShmeliov 那么当你的布尔值为true、false、true、false、false、true、false、false时,你期望得到什么结果呢?在ASCII中,任何第一个值为true的组合都是未定义的。有效的ASCII值只有0到127。那么我再次问,如果只有7个元素可以设置,为什么要使用长度为8的数组呢? - user743382
显示剩余3条评论
1个回答

4

char包含2个字节。您可以将bool数组转换为一个字节,然后使用Convert类将其转换为字符。

public byte ConvertToByte(bool[] arr)
{
   byte val = 0;
   foreach (bool b in arr)
   {
      val <<= 1;
      if (b) val |= 1;
   }
   return val;
}

reference


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接