首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将布尔数组编码为ushort

将布尔数组编码为ushort
EN

Stack Overflow用户
提问于 2017-03-22 08:48:16
回答 2查看 1K关注 0票数 0

让我们假设我们有一个布尔值的数组,有些是真的,有些是假的。我喜欢生成一个ushort,并根据数组设置位。

一个ushort由2个字节组成,-组成16位。

因此,数组中的第一个布尔值需要设置ushort的第一位,否则该位将为0。需要对ushort中的每一位重复此操作。

如何设置一个方法存根,该方法存根接受一组bools作为输入并返回编码的ushort?(C#)

EN

回答 2

Stack Overflow用户

发布于 2017-03-22 09:08:14

您可以使用BitConverter类(https://msdn.microsoft.com/en-us/library/bb384066.aspx)将字节转换为整数,并使用二进制操作(如StackOverflow问题中的How can I convert bits to bytes?)将位转换为字节

例如:

代码语言:javascript
复制
//Bools to Bytes...
bool[] bools = ...
BitArray a = new BitArray(bools);
byte[] bytes = new byte[a.Length / 8];
a.CopyTo(bytes, 0);
//Bytes to ints
int newInt = BitConverter.ToInt32(bytes); //Change the "32" to however many bits are in your number, like 16 for a short

这只适用于一个int,所以如果您在一个位数组中有多个int,则需要拆分数组才能使用此方法。

票数 2
EN

Stack Overflow用户

发布于 2017-03-22 09:07:47

https://msdn.microsoft.com/en-us/library/system.collections.bitarray(v=vs.110).aspx可能更适合您的用例

代码语言:javascript
复制
bool[] myBools = new bool[5] { true, false, true, true, false };
BitArray myBA = new BitArray(myBools);

foreach (var value in myBA)
{
    if((bool)value == true)
    {
    }
    else
    {
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42940803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档