You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.3 KiB
42 lines
1.3 KiB
namespace AX.NetworkSystem |
|
{ |
|
/// <summary> |
|
/// 在 Big Endian 和 Little Endian 间互换存储字节顺序。 |
|
/// </summary> |
|
public static class Endian |
|
{ |
|
public static short SwapInt16(short v) |
|
{ |
|
return (short)(((v & 0xff) << 8) | ((v >> 8) & 0xff)); |
|
} |
|
|
|
public static ushort SwapUInt16(ushort v) |
|
{ |
|
return (ushort)(((v & 0xff) << 8) | ((v >> 8) & 0xff)); |
|
} |
|
|
|
public static int SwapInt32(int v) |
|
{ |
|
return (int)(((SwapInt16((short)v) & 0xffff) << 0x10) | |
|
(SwapInt16((short)(v >> 0x10)) & 0xffff)); |
|
} |
|
|
|
public static uint SwapUInt32(uint v) |
|
{ |
|
return (uint)(((SwapUInt16((ushort)v) & 0xffff) << 0x10) | |
|
(SwapUInt16((ushort)(v >> 0x10)) & 0xffff)); |
|
} |
|
|
|
public static long SwapInt64(long v) |
|
{ |
|
return (long)(((SwapInt32((int)v) & 0xffffffffL) << 0x20) | |
|
(SwapInt32((int)(v >> 0x20)) & 0xffffffffL)); |
|
} |
|
|
|
public static ulong SwapUInt64(ulong v) |
|
{ |
|
return (ulong)(((SwapUInt32((uint)v) & 0xffffffffL) << 0x20) | |
|
(SwapUInt32((uint)(v >> 0x20)) & 0xffffffffL)); |
|
} |
|
} |
|
} |