PEM consists of a header and footer that identify the object that has been encoded. It may sometimes also contain some arguments behind the header line. The actual data is base 64 encoded. You can view the contents by decoding it using a base 64 encoding.
Now the DH parameters are encoded using ASN.1 BER, which is a binary encoding. This encoding is used for most if not all PEM encoded structures. ASN.1 is a data description language. ASN.1 structures can be seen as a tree with constructed nodes (sequences) and primitive nodes (strings, byte arrays, integers and such) all using network ordering. These nodes are generally encoded using tag-length-value (TLV) encoding. As the tag for a
SEQUENCE is the value
30 (in hex), the first base 64 letter is almost certainly an M.
The version of base 64 used by PEM pads anything that isn't a multiple of 4 characters (three bytes) to 4 characters using the
So the first characters and the amount of
= characters at the end is mainly dependent on the size of the parameters rather than their value.
This is the contents of the ASN.1 tree in the contents of your PEM text:
INTEGER(256 bit) 1097277930034063274792561151504789680016548759529511363308187422232757…
INTEGER(1025 bit) 331904441233693192104476260016584324479133460055459757886261577377912…
generated using the ASN.1 decoder here.