El tamaño del byte de mapa de bits [] difiere del tamaño del flujo de memoria BMP

Estoy tratando de enviar un mapa de bits a través de una conexión tcp / ip. Hasta ahora mi programa funciona como debería. Pero durante la depuración descubrí un valor extraño de mi byte de mapa de bits [].

Abro un mapa de bits de 24 bits y lo convierto a 16 bits. El mapa de bits es 800x600, por lo que la longitud del byte [] debe ser 800 * 800 * 2Byte = 960000Byte ... Pero mi matriz es 960054 ...

¿De dónde vienen los bytes adicionales?

        Console.WriteLine("Bitmap auf 16Bit anpassen...\n");
        Rectangle r = new Rectangle(0,0,bitmap_o.Width, bitmap_o.Height);
        Bitmap bitmap_n = bitmap_o.Clone(r, PixelFormat.Format16bppRgb555);
        bitmap_n.Save("test2.bmp");

        Console.WriteLine("Neue Bitmap-Eigenschaften:");
        Console.WriteLine(bitmap_n.Width.ToString());
        Console.WriteLine(bitmap_n.Height.ToString());
        Console.WriteLine(bitmap_n.PixelFormat.ToString());

        byte[] data = new byte[0];
        MemoryStream mem_stream = new MemoryStream();
        bitmap_n.Save(mem_stream, ImageFormat.Bmp);
        data = mem_stream.ToArray();
        mem_stream.Close();

        Console.WriteLine(data.Length.ToString());

        stream.Write(data, 0, 960000);
        Console.WriteLine("Sending data...");

Respuestas a la pregunta(2)

Su respuesta a la pregunta