首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

字节数组 转 整型数 ,再有其他好办法

2014-01-15 
字节数组 转 整型数 ,还有其他好办法? byte[] mytest new byte[4]mytest[0]0x01mytest[1]0x02mytes

字节数组 转 整型数 ,还有其他好办法?

 byte[] mytest = new byte[4];
            mytest[0]=0x01;
            mytest[1]=0x02;
            mytest[2]=0x03;
            mytest[3]=0x04;
            //实现4字节数组到整数的转换  
            b = mytest[3] + (mytest[2] << 8) + (mytest[1] << 16)+(mytest[0] << 24); 


刚试了,可以用

有没有更好的办法? 也就效率更好的? 如 联合体 C里可以

或者有这样的函数

byte[] buffer = BitConverter.GetBytes(1000);


当然,这个函数是反向的,即 整数 转到 字节数组...

有反向的函数么? 



[解决办法]
BitConverter.GetInt32(字节, 0)
[解决办法]
引用:
Quote: 引用:

BitConverter.ToInt32(字节, 0) 


可以用,,但是,字节数组的内容,要倒过来写...

原来是16进制数: 0x01020304  ,要倒过来存

即数 索引 0 里存04

1 里存03...



Array.Reverse(数组)
[解决办法]

        /// <summary>
        /// 自定义结构转换为byte[]类型
        /// </summary>
        /// <param name="anything">自定义结构</param>
        /// <returns>byte[]数组</returns>
        public static byte[] RawSerialize(object anything)
        {
            int rawsize = Marshal.SizeOf(anything);
            IntPtr buffer = Marshal.AllocHGlobal(rawsize);
            Marshal.StructureToPtr(anything, buffer, false);
            byte[] rawdatas = new byte[rawsize];
            Marshal.Copy(buffer, rawdatas, 0, rawsize);
            Marshal.FreeHGlobal(buffer);
            return rawdatas;
        }

        /// <summary>
        /// byte[]结构转换为自定义结构
        /// </summary>
        /// <param name="rawdatas">源byte[]数组</param>
        /// <param name="anytype">自定义结构类型</param>
        /// <returns>自定义结构变量</returns>
        public static  object RawDeserialize(byte[] rawdatas, Type anytype)
        {
            int rawsize = Marshal.SizeOf(anytype);
            if (rawsize > rawdatas.Length)
                return null;
            IntPtr buffer = Marshal.AllocHGlobal(rawsize);
            Marshal.Copy(rawdatas, 0, buffer, rawsize);
            object retobj = Marshal.PtrToStructure(buffer, anytype);
            Marshal.FreeHGlobal(buffer);
            return retobj;
        }


没测试效率,供参考。字节数组 转 整型数 ,再有其他好办法字节数组 转 整型数 ,再有其他好办法
[解决办法]
我感觉还是LZ的效率比较高,我好像记得,移位操作对计算机底层硬件来说执行很快的
[解决办法]
b = mytest[3] + (mytest[2] << 8) + (mytest[1] << 16)+(mytest[0] << 24);   这种效率是最高的,用其他的就是浪费。 

热点排行