是否有一种简单的方法可以将布尔值数组转换为8位十六进制等效值?例如,如果我有
bool[] BoolArray = new bool[] { true,false,true,true,false,false,false,true };
如果true值= 1且false值= 0,那么我想要一个将上述数组转换为0xB1(10110001)的方法或函数。
是否存在这样的功能或方法?顺便说一下,我正在使用C#。
答案 0 :(得分:8)
是的,您可以使用BitArray
课程。这样的事情应该这样做:
BitArray arr = new BitArray(BoolArray);
byte[] data = new byte[1];
arr.CopyTo(data, 0);
如果用“8位十六进制”表示字符串表示,则可以使用BitConverter
类:
string hex = BitConverter.ToString(data);
答案 1 :(得分:0)
怎么样
static int BoolArrayToInt(bool[] arr)
{
if (arr.Length > 31)
throw new ApplicationException("too many elements to be converted to a single int");
int val = 0;
for (int i = 0; i < arr.Length; ++i)
if (arr[i]) val |= 1 << i;
return val;
}
static string ToHexStr(int i) { return i.ToString("X8"); }
免责声明:未经测试
答案 2 :(得分:0)
二进制部分可以通过以下方法实现:
bool[] boolArray = {true, false, true}
将给出 101 :
int BoolArrayToInt(bool[] bArray)
{
char[] caseChar = new char[bArray.Length];
for(int i = 0; i < bArray.Length; i++)
{
if (bArray[i] == true)
{
caseChar[i] = '1';
}
else
{
caseChar[i] = '0';
}
}
string caseString = new string(caseChar);
int caseNum = System.Convert.ToInt32(caseString);
return caseNum;
}