如何使用C#从位信息创建char数组

我有以下结构:

如何使用C#从位信息创建char数组

我需要创建一个包含信息值的char数组,我的意思是,我需要这样的东西:

char[] result = new char[]{Information, Information, Information, Information}

最好的方法是什么?我做的是获取字节,然后传递给位数组,接下来创建一个包含信息位置的字符串,最后在字符串上应用ToCharArray()方法并提供所需信息,但我想知道是否存在最佳方法.

var oneByteInfo = message.ReadBytes(1);
var oneByteInfo2 = message.ReadBytes(1);
var infoBitArray = new BitArray(oneByteInfo);
var info2BitArray = new BitArray(oneByteInfo2);

var arrayString = Convert.ToString(BitConverter.GetBytes(infoBitArray[0])[0]) +  
                            Convert.ToString(BitConverter.GetBytes(infoBitArray[1])[0]) + 
                            Convert.ToString(BitConverter.GetBytes(info2BitArray[0])[0]) + 
                             Convert.ToString(BitConverter.GetBytes(info2BitArray[1])[0]);

var result = arrayString.ToCharArray();

提前致谢.

解决方法:

大概是这样的:

char[] arr = new char[4];
arr[0] = (bytes[2] & 0x01) != 0 ? '1' : '0';
arr[1] = (bytes[2] & 0x02) != 0 ? '1' : '0';
arr[2] = (bytes[3] & 0x01) != 0 ? '1' : '0';
arr[3] = (bytes[3] & 0x02) != 0 ? '1' : '0';

请注意,有更简单的方法可以做到这一点(例如,将两个位的所有4种可能组合作为字符串,并且只进行查找) – 但这在一般情况下有效.

上一篇:LeetCode 762 Prime Number of Set Bits in Binary Representation 解题报告


下一篇:java多线程---synchronizedsynchronized分析