It isn't hex, but yet it sort of is. It's an "escaped" string. But you will see the numbers following the "%" marks are really the hex values of the characters they are encoded for.
For example: %3A is ":", %7B is "{", etc. . .
You can see the values if you simply pull up the character map utility in windows.
The string you posted here translates to:
a:2:{s:11:"autologinid";s:0:"";s:6:"userid";s:3:"851";}
There is a javascript function available called escape() which puts strings into the format you originally posted and another called un-escape() (remove the "-", forum software will not allow me to post the word without it) which . . .well. . .unescapes. I used that method to "descramble" the string above from your original post.
It generates output similar to the encodeURI() method. It is basically translating all the characters in the string into a form that is suitable as a usable URI/URL. But basically if you know the hexadimal code equivalents, then you can figure out the translation yourself with just a character map.