I would use a byte pointer:
cid_t CID;
card.readCID(&CID);
byte * bp = (byte *) &CID;
for (int i=0; i < sizeof CID; i++)
{
if (bp[i] < 0x10)
Serial.print('0'); // supply leading zero
Serial.print(bp[i], HEX);
}
Serial.println();