Reading hex data from serial port of photon

You are reading bytes they have no format other than binary.

Hex, oct or even dec are mere conventions to make these binary patterns better readable for humans. An electronic device is quite happy with binary and doesn’t even care how you type in a number in your code. After compilation that number (e.g. 88 or 0x58 or 0130 or 0b01011000 or even the letter ‘X’) are all the same thing for it.

Once you received the byte that is the hex or oct or dec or binary or ASCII value you need - any interpretation ontop of that is up to your needs.

If you want to visually read the data in hex representation you can translate the numeric value of your read byte like this

  uint8_t d = 88;
  uint8_t x = 0x58;
  uint8_t o = 0130;
  uint8_t b = 0b01011000;
  char    a = 'X';
  char    asText[64];
  snprintf(asText, sizeof(asText)
          , "All values as hex: 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x", d, x, o, b, a);
  Serial.println(asText);

(the 0x preceding the percent (%) signs are just static text to render the common 0x## representation)

But for your expected response length of 13 bytes you cannot use Particle.publish() for each individual byte as you will run into the rate limit after the first four bytes.
You also cannot transmit the checksum as in many cases it probably won’t fall into the allowed range of allowed characters.

BTW, I’m not sure what your command 0x4F is meant to return, but Serial1.readString() will stop reading as soon it finds a zero byte in the data stream - is this intended?