public static byte[] ToBytes(this UInt16 value, JDIConst.ByteOrder byteOrder = JDIConst.ByteOrder.Network) { byte[] bytes = new byte[2]; switch (byteOrder) { case JDIConst.ByteOrder.LittleEndian: bytes[1] = (byte)((value >> 8) & 0xFF); bytes[0] = (byte)((value >> 0) & 0xFF); break; case JDIConst.ByteOrder.BigEndian: case JDIConst.ByteOrder.Network: bytes[0] = (byte)((value >> 8) & 0xFF); bytes[1] = (byte)((value >> 0) & 0xFF); break; } return bytes; }
/// <summary> /// Outputs an Int16 value /// </summary> /// <param name="offset">Start index</param> /// <param name="byteOrder">Byte order</param> /// <returns>Int16 value</returns> public static Int16 ToInt16(this byte[] array, int offset, JDIConst.ByteOrder byteOrder = JDIConst.ByteOrder.Network) { Int16 value = 0; switch (byteOrder) { case JDIConst.ByteOrder.LittleEndian: value = (Int16)((array[offset + 1] << 8) + (array[offset])); break; case JDIConst.ByteOrder.BigEndian: case JDIConst.ByteOrder.Network: value = (Int16)((array[offset] << 8) + (array[offset + 1])); break; } return value; }
/// <summary> /// Outputs an UInt64 value /// </summary> /// <param name="offset">Start index</param> /// <param name="byteOrder">Byte order</param> /// <returns>UInt64 value</returns> public static UInt64 ToUInt64(this byte[] array, int offset, JDIConst.ByteOrder byteOrder = JDIConst.ByteOrder.Network) { UInt64 value = 0; switch (byteOrder) { case JDIConst.ByteOrder.LittleEndian: value = (UInt64)((array[offset + 7] << 56) + (array[offset + 6] << 48) + (array[offset + 5] << 40) + (array[offset + 4] << 32) + (array[offset + 3] << 24) + (array[offset + 2] << 16) + (array[offset + 1] << 8) + (array[offset])); break; case JDIConst.ByteOrder.BigEndian: case JDIConst.ByteOrder.Network: value = (UInt64)((array[offset] << 56) + (array[offset + 1] << 48) + (array[offset + 2] << 40) + (array[offset + 3] << 32) + (array[offset + 4] << 24) + (array[offset + 5] << 16) + (array[offset + 6] << 8) + (array[offset + 7])); break; } return value; }