Nul*_*nce 1 .net c# arrays byte
我知道我可以使用以下方法将字节数组转换为int数组:
int[] bytesAsInts = yourBytes.Select(x => (int)x).ToArray();
Run Code Online (Sandbox Code Playgroud)
如何将字节数组转换为固定大小的int数组,并用填充其余数组0x00
?
例如,我的字节数组是10个字节,并且我想创建一个长度为14的int数组。该代码应转换我的字节数组的10个字节,并将其余4个字节填充为 0x00
给自己写一个可重用的扩展方法,该方法可以填充序列:
static IEnumerable<T> AppendPadding(this IEnumerable<T> items, int totalCount, T paddingItem) {
int count = 0;
foreach (var item in items) {
yield return item;
count++;
}
for (int i = count; i < totalCount; i++)
yield return paddingItem;
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
int[] bytesAsInts = yourBytes.Select(x => (int)x).AppendPadding(14, 0).ToArray();
Run Code Online (Sandbox Code Playgroud)
通过序列上的单个线性传递,该方法可用于任何类型的序列。这也很懒。通过抽象填充序列问题,您可以从主算法中消除执行填充的复杂性。现在它被隐藏在其他任何人都不必关心的地方。剔除不重要的细节会导致代码简洁,因为所有复杂性都隐藏在一个定义明确的接口后面。