C# 我该怎么做呢?

C# 我该怎么做呢?,c#,bytearray,C#,Bytearray,我在寻找一种方法,如何把一个完整的ByteArray。例如,如果我有如下顺序(例如!我有大小超过300字节的文件),如下所示: 80 37 12 40 然后把它装进一个队列。我如何将其转换为以下内容: 37 80 40 12 在我的项目中,通常的长度是4字节。所以我不难解决这个问题: public static ushort SwapBytes(ushort x) { return (ushort)((ushort)((x & 0xff) <<

我在寻找一种方法,如何把一个完整的ByteArray。例如,如果我有如下顺序(例如!我有大小超过300字节的文件),如下所示:

80 37 12 40
然后把它装进一个队列。我如何将其转换为以下内容:

37 80 40 12
在我的项目中,通常的长度是4字节。所以我不难解决这个问题:

   public static ushort SwapBytes(ushort x)
   {
       return (ushort)((ushort)((x & 0xff) << 8) | ((x >> 8) & 0xff));
   }

                   byte[] rev = Assembler.Operations.ToByteArray(towrite);
                   byte[] half = new byte[2];
                   byte[] half2 = new byte[2];
                   ushort tt = BitConverter.ToUInt16(rev, 0);
                   tt = SwapBytes(tt);

                   half = BitConverter.GetBytes(tt);

                   Start.fs.Write(half, 0, 2);
公共静态ushort交换字节(ushort x)
{
返回(ushort)((ushort)((x&0xff)>8)和0xff));
}
字节[]rev=Assembler.Operations.ToByteArray(towrite);
字节[]半=新字节[2];
字节[]半字节2=新字节[2];
ushort tt=位转换器.ToUInt16(版本0);
tt=交换字节(tt);
half=位转换器.GetBytes(tt);
Start.fs.Write(一半,0,2);

那么,如果我有一个超过400字节的二进制文件,我该怎么做呢?我不能就这么做。我想像上面显示的那样字节交换整个字节数组。

只需在循环中交换相邻的字节即可。不需要转换成ushort和摆弄面具

    static void SwapByteArray(byte[] a)
    {
        // if array is odd we set limit to a.Length - 1.
        int limit = a.Length - (a.Length % 2);
        if (limit < 1) throw  new Exception("array too small to be swapped.");
        for (int i = 0; i < limit - 1; i = i + 2)
        {
            byte temp = a[i];
            a[i] = a[i + 1];
            a[i + 1] = temp;
        }
    }
静态无效交换字节数组(字节[]a)
{
//若数组是奇数,我们将限制设置为a.Length-1。
int limit=a.长度-(a.长度%2);
if(limit<1)抛出新异常(“数组太小,无法交换”);
对于(int i=0;i
为什么要转换为ushort并摆弄位?只需以2的步骤遍历数组,并在运行时交换元素。如果数组的长度不是偶数而是奇数,您想做什么?@Blorgbeard,因为我的汇编程序就是这样构建的。它适用于位数组。一个用于寄存器,一个用于指令。我随后附加它们,直到达到32位,然后将它们转换为bytearray,然后进行如上所示的交换。然而,在这种情况下,它不再适用,因为我想字节交换一个大于4字节的完整二进制文件。所以我想用拜提斯的方式。(我将二进制文件读入字节数组)