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/