c# - 将字节数组转换为一定长度的数组段
问题描述
我有一个字节数组,我想返回一定大小的顺序块(以新字节数组的形式)。
我试过了:
originalArray = BYTE_ARRAY
var segment = new ArraySegment<byte>(originalArray,0,640);
byte[] newArray = new byte[640];
for (int i = segment.Offset; i <= segment.Count; i++)
{
newArray[i] = segment.Array[i];
}
显然,这只从原始数组创建了一个前 640 个字节的数组。最终,我想要一个遍历前 640 个字节并返回这些字节数组的循环,然后遍历下一个 640 个字节并返回一个 THOSE 字节数组。这样做的目的是向服务器发送消息,每条消息必须包含 640 个字节。我不能保证原始数组长度可以被 640 整除。
谢谢
解决方案
如果速度不是问题
var bytes = new byte[640 * 6];
for (var i = 0; i <= bytes.Length; i+=640)
{
var chunk = bytes.Skip(i).Take(640).ToArray();
...
}
或者你可以使用
跨度
Span<byte> bytes = arr; // Implicit cast from T[] to Span<T>
...
slicedBytes = bytes.Slice(i, 640);
块复制
请注意,这可能是 3 个中最快的
var chunk = new byte[640]
Buffer.BlockCopy(bytes, i, chunk, 0, 640);
推荐阅读
- javascript - 新的子元素包含父 JS 错误
- python - TypeError:尝试获取矩阵中元素的乘积时,无法将序列乘以“列表”类型的非整数
- c - Execve() 添加了两个额外的参数
- javascript - NodeJS - 回调函数中的断言没有失败 Mocha 单元测试
- node.js - 为什么我收到此 Facebook Passport oauth2 响应错误?
- keycloak - Keycloak 注册 - 未正确拾取自定义用户属性值
- r - assign() 仅用于数组的一张 - 避免手动更改
- r - 不同变量的线性图
- python - 在 Python 中将图像 3 通道深度转换为 1 通道的快速方法?
- java - 访问二维数组的元素时出现问题(仅生成一列)。- 爪哇