C# 网络通信大小端转换类

来源:互联网 发布:域名怎么绑定服务器ecs 编辑:程序博客网 时间:2024/04/19 11:37
using System;namespace Framework.NetPackage.Common{    /// <summary>    /// 字节序转换    /// </summary>    public static class Endian    {        public static short SwapInt16(this short n)        {            return (short)(((n & 0xff) << 8) | ((n >> 8) & 0xff));        }        public static ushort SwapUInt16(this ushort n)        {            return (ushort)(((n & 0xff) << 8) | ((n >> 8) & 0xff));        }        public static int SwapInt32(this int n)        {            return (int)(((SwapInt16((short)n) & 0xffff) << 0x10) |                          (SwapInt16((short)(n >> 0x10)) & 0xffff));        }        public static uint SwapUInt32(this uint n)        {            return (uint)(((SwapUInt16((ushort)n) & 0xffff) << 0x10) |                           (SwapUInt16((ushort)(n >> 0x10)) & 0xffff));        }        public static long SwapInt64(this long n)        {            return (long)(((SwapInt32((int)n) & 0xffffffffL) << 0x20) |                           (SwapInt32((int)(n >> 0x20)) & 0xffffffffL));        }        public static ulong SwapUInt64(this ulong n)        {            return (ulong)(((SwapUInt32((uint)n) & 0xffffffffL) << 0x20) |                            (SwapUInt32((uint)(n >> 0x20)) & 0xffffffffL));        }    }}

C# 与 JAVA  / Erlang / AS3 通信 需要转化大小端,  与C++通信不需要。

转自 : http://www.cnblogs.com/endure/p/3425140.html

0 0