c# – 允许我选择字节顺序的BlockCopy替代方法

假设我有一个字节数组:

byte[] input = { 0xFF, 0xFc, 0x00, 0x00 }

无论类型如何,您都可以使用Buffer.BlockCopy将字节从一个数组复制到另一个数组.所以,我可以这样做:

uint[] output = new uint[1];
Buffer.BlockCopy(input , 0, output, 0, input.Length);

这会将字节从输入复制到输出,并在整个过程中将它们从字节数组转换为uint数组.

问题是BlockCopy以小字节顺序解释字节.我需要一个使用大字节序的副本.因此,不是像我需要的那样得到4294705152(0xFFFC0000)的uint值,而是得到值64767(0x0000FCFF).请注意,这是一个简单的例子,我不能轻易地反转我的实际应用程序中的字节顺序.

有没有什么方便和速度的BlockCopy包括设置我需要的字节顺序的能力?

最佳答案 这个主题似乎在这里涉及:

How to get little endian data from big endian in c# using bitConverter.ToInt32 method?

但是,必须在整个输入数组上迭代转换.

点赞