C# 如何将 short[] 转换为 bool[]?

标签 c# arrays boolean short

short[] sBuf = new short[2];
sBuf[0] = 1;
sBuf[1] = 2;

bool[] bBuf = new bool[sBuf.Length * 16];
Buffer.BlockCopy(sBuf, 0, bBuf, 0, sBuf.Length * 2);

Desired result value  
sBuf[0] = 1
bBuf[0] = true, bBuf[1] = false, bBuf[2] = false, bBuf[3] = false...
sBuf[0] = 2
bBuf[16] = false, bBuf[17] = true, bBuf[18] = false, bBuf[19] = false...

但无法正确转换。
我想从 short [] 转换为 bool [],但我不知道如何。

最佳答案

假设每个 bool代表其对应的 short 中的一位(这大概就是你将大小乘以 16 的原因)你可以按如下方式进行转换:

bBuf = sBuf
    .SelectMany(s => Enumerable.Range(0, 16).Select(i => (s & (1<<i)) != 0))
    .ToArray();

想法是为每个 short 构造 16 个 boolean 值调用 Enumerable.Range , 用 (1 << i) 屏蔽数字, 并将结果与​​零进行比较。

关于C# 如何将 short[] 转换为 bool[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43253834/

相关文章:

c - 从整数到字符数组的数字和打印

arrays - 寻找正弦波阵列的频率

c# - C#.Net 和 Oracle 加密结果不同

c# - 如何在 Windows 应用商店 (WinRT) 应用程序中使用 C# 检查 CapsLock 按钮的状态

c# - 如果页面标题等于特定标题,则在 NopCommerce 中显示内容

c++ - 动态内存分配并接受输入

python - boolean 问题。和、或、和或、或不

python - 删除 pandas dataframe 列中包含 False 的行

java - 如何使用返回 2 个以上值的 boolean 方法

c# - 为当前域创建安全标识符