假设我有一个字节数组:
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
的方便性和速度是否有能力设置我需要的字节顺序?
答案 0 :(得分:2)
这里似乎涵盖了这个主题:
How to get little endian data from big endian in c# using bitConverter.ToInt32 method?
但是必须在整个输入数组上迭代转换。