C# 将阵列拆分为特定长度的子阵列
我知道类似的问题被问了很多次。然而,我没有找到我需要的解决方案,我自己也找不到 我的场景:我有一个C# 将阵列拆分为特定长度的子阵列,c#,linq,C#,Linq,我知道类似的问题被问了很多次。然而,我没有找到我需要的解决方案,我自己也找不到 我的场景:我有一个字节数组。现在我需要将它们转换为位,然后创建一个数组,该数组将包含精确的位数 我能够将它们转换为位并创建特定长度的数组,但每个索引中只有8位 我的代码示例: var blocks = byteArr.Select(byte => Convert.ToString(byte, 2).PadLeft(8, '0')) .Select((byte, i) => new { Value
字节数组
。现在我需要将它们转换为位
,然后创建一个数组,该数组将包含精确的位数
我能够将它们转换为位并创建特定长度的数组,但每个索引中只有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();
它回来了。从屏幕截图上可以看出,它创建了“100字节数组”数组,但我需要的是“100位数组”数组或更好的字符串数组,其中每个字符串都有100位
感谢您的回复和帮助。请尝试以下方法
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组。最后,您只需创建这些“字符位”的新字符串。字节
不是有效的变量名,除非在它前面加上一个@
,但实际上您应该选择另一个名称,在这种情况下b
就可以了。我刚刚回答了一个类似的问题。你可以在我的答案中找到这个方法@juharr,是的,是的,我有一个字母,但在堆栈溢出问题中,我把它编辑成了字节,并没有意识到它是无效的。谢谢,我要一个look@juaharr,谢谢你的回复和链接,但似乎这并不能解决我的问题。在你的回答中,你正在将数字转换为位,但我已经有了位数组(长度为8的字符串),我只需要将它们连接起来,创建长度为100的字符串数组。很好,它工作得很好。一旦我获得15个声誉,我会投票支持:)非常感谢