internal static string ReadString(Byte[] buffer, int offset)
        {
            int str_size = BitHelper.ToInt32(buffer, offset);

            offset += 4;
            return(GetString(buffer, offset, str_size));
        }
 /// <summary>
 /// Returns a decimal value converted from 16 bytes at a specified position in a byte array.
 /// </summary>
 /// <param name="buffer">An array of bytes.</param>
 /// <param name="startIndex">The starting position within the buffer.</param>
 /// <returns>A decimal value.</returns>
 public static decimal GetDecimal(byte[] buffer, int startIndex)
 {
     int[] int_array = new int[4];
     for (int i = 0; i < 4; i++)
     {
         int_array[i] = BitHelper.ToInt32(buffer, startIndex + (i << 2));
     }
     return(new decimal(int_array));
 }
        internal static string ReadString(MemoryStream ms)
        {
            byte[] int_bytes = new byte[4];
            ms.Read(int_bytes, 0, 4);
            int str_size = BitHelper.ToInt32(int_bytes, 0);

            byte[] str_buff = new byte[str_size];
            ms.Read(str_buff, 0, str_size);
            return(GetString(str_buff));
        }
 /// <summary>
 /// Writes an IPEndPoint instance to the specified buffer.
 /// </summary>
 /// <param name="ipe">An IPEndPoint instance.</param>
 /// <param name="buffer">The buffer to write the ipe in.</param>
 public unsafe static void WriteIPEndPoint(IPEndPoint ipe, byte *buffer)
 {
     *(int *)buffer       = BitHelper.ToInt32(ipe.Address.GetAddressBytes(), 0);
     *(int *)(buffer + 4) = ipe.Port;
 }