我知道有很多次问过类似的问题。然而,我没有找到我需要的解决方案,也无法自己找到它。
我的方案:我有bytes
数组。现在我需要将它们转换为bits
,然后创建包含确切位数的数组。
我能够将它们转换为位并创建特定长度的数组,但每个索引中只有8位。
我的代码示例:
var blocks = byteArr.Select(byte => Convert.ToString(byte, 2).PadLeft(8, '0'))
.Select((byte, i) => new { Value = byte, Index = i })
.GroupBy(x => x.Index / 100)
.Select(grp => grp.Select(x => x.Value).ToArray())
.ToArray();
返回{{3}}。如何在屏幕截图中看到,它创建了一组100字节的数组'但我需要的是#100; 100位数组'或者更好的字符串数组,其中每个字符串都有100位。
感谢您的回复和帮助。
答案 0 :(得分:2)
尝试以下
var blocks = byteArr.SelectMany(myByte => Convert.ToString(myByte , 2).PadLeft(8, '0'))
.Select((bit, i) => new { Bit = bit, Index = i })
.GroupBy(x => x.Index / 100)
.Select(grp => new string(grp.Select(x => x.Bit).ToArray()))
.ToArray();
SelectMany
会将二进制字符串分解为各个字符,然后您将按索引将它们分组为100。最后,您只需创建那些“char bits”的新字符串。