Surely you want Serial.print(ff, HEX); rather than just Serial.print(ff);
if you want the output to look the same.
Yes, you're right. Anyway the output is the same. Also
Serial.print( pgm_read_byte( charSet + i ), HEX );
produces same output. I really can't understand