日期:2014-05-18  浏览次数:20894 次

int转byte[]的问题
如题,int转byte[]使用如下方法:
C# code

byte[] result = BitConverter.GetBytes(255);


得到的结果是这个:
result{255,0,0,0}
但是这不是我要的结果,我希望结果是大小端(高低端)对换,是这个结果:
result{0,0,0,255}
我自己写了一个方法,如下:
C# code

        public void changeEndToStart(byte[] bt, int size)
        {
            int i = 0;
            int half = size / 2;
            byte b;
            for (i = 0; i < half; i++)
            {
                b = bt[i];
                bt[i] = bt[size - i - 1];
                bt[size - i - 1] = b;
            }
        }


调用这个方法后,得到的结果就是大小端对换后的:
C# code

byte[] result = BitConverter.GetBytes(255);
changeEndToStart(result,4)
//得到的result是这个结果:result{0,0,0,255}



请问int转byte[],得到大小端对换的结果,除了刚才我用这个方法,还有其他简洁高效的方法吗?
请给出代码,谢谢



------解决方案--------------------
C# code
byte[] result = BitConverter.GetBytes(255).Reverse().ToArray() ;

------解决方案--------------------
探讨

C# code
byte[] result = BitConverter.GetBytes(255).Reverse().ToArray() ;

------解决方案--------------------
在不使用指针的情况下,下面代码是最快的了。
C# code

        public static byte[] IntToByteArray(int value)
        {
            byte[] array = new byte[4];
            for (int i = 3; i >= 0; i--)
            {
                array[i] = (byte)(value & 0xff); value = value >> 8;
            }
            return array;
        }