BlockCopy替代方案,允许我选择字节顺序

时间:2014-03-18 07:06:38

标签: c# endianness

假设我有一个字节数组:

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的方便性和速度是否有能力设置我需要的字节顺序?

1 个答案:

答案 0 :(得分:2)

这里似乎涵盖了这个主题:

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

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