Hoo*_*ony 8 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...
Run Code Online (Sandbox Code Playgroud)
但无法正确转换.
我想从short []转换为bool [],但我不知道如何.
das*_*ght 14
假设每个bool
代表一个相应的位short
(这可能是你将大小乘以16的原因),你可以按如下方式进行转换:
bBuf = sBuf
.SelectMany(s => Enumerable.Range(0, 16).Select(i => (s & (1<<i)) != 0))
.ToArray();
Run Code Online (Sandbox Code Playgroud)
我们的想法是short
通过调用Enumerable.Range
,掩盖数字(1 << i)
,并将结果与零进行比较,为每个构造16个布尔值.