数据来自程序外部,因此长数组必须转换为字节数组。如何高效地进行转换?此外,是否有一种选择转换类型为小端或大端的方法?
您可以按照以下方式将long
数组转换为byte
数组:
bool isLittleEndian = true;
byte[] data = new byte[longData.Length * 8];
int offset = 0;
foreach (long value in longData) {
byte[] buffer = BitConverter.GetBytes(value);
if (BitConverter.IsLittleEndian != isLittleEndian) {
Array.Reverse(buffer);
}
buffer.CopyTo(data, offset);
offset += 8;
}
这通常已经足够高效了。如果你需要更快的速度,你可以在不安全的代码块中使用指针。
long
都应该变成目标数组中的8个字节吗?(并且转换过程应该能够处理不同的字节序?) - LukeH