创建字节数组重构
本文关键字:重构 数组 字节数 字节 创建 | 更新日期: 2023-09-27 18:08:52
我需要创建用于测试的字节数组。我实现了自己的解决方案,但不确定它是否是最佳的。
byte counter = 0;
Func<int, byte[]> createByteArray = size =>
{
var array = new byte[size];
for (int index = 0; index < size; index++)
{
array[index] = counter++;
if (counter == byte.MaxValue)
{
counter = 0;
}
}
return array;
};
有什么方法可以简化这个吗?
我不确定这是不是更好,但更短。
Func<int, byte[]> createByteArray = size => Enumerable.Range(0, size)
.Select(i => (byte)(i % 256))
.ToArray();
因为它是用于测试,所以您可以使用Random.NextBytes(...)
创建一个完整的随机缓冲区。
如果没有,则不需要分支:
Func<int, byte[]> createByteArray = size =>
{
var array = new byte[size];
for (int index = 0; index < size; index++)
{
array[index] = (byte)(index & 0xFF);
}
return array;
};
你有c# !使用它!
byte counter = 0;
Func<int, byte[]> createByteArray = size =>
{
var array = new byte[size];
for (int index = 0; index < size; index++)
{
unchecked
{
array[index] = counter++;
}
}
return array;
};
不知道你为什么把counter
放在外面。但如果你喜欢这样…
使用unchecked
块允许数字溢出在那里。这将自动将您的值限制为byte
范围内可能的值。
我不知道你生成的数组有多大。如果生成速度是一个问题,并且数组非常大,您只能手动填充值0到255,然后开始将卡盘复制到剩余的数组中。参见Array.ConstrainedCopy
。但这只在数组生成太慢且数组非常大(n倍于Byte的范围)