Convert a decimal value in char to hex and store in the char

This the code on Sender side of the CAN, which sends the GPS data

#include <SoftwareSerial.h>
#include <CAN.h>
#include<math.h>
SoftwareSerial GPSModule(2,3); // RX, TX
int updates;
int failedUpdates;
int pos;
int stringplace = 0;
unsigned long c;
unsigned long d;
String lati,longi;

char sData[10];
char ASCIINULL = '0' ;
byte pGPSData[8];
byte pGPStime[8];
int nPos = 0;
unsigned long lLatitude;
unsigned long lLongitude;
float fLatitude = 0;
float fLongitude = 0;
unsigned long ltime;
unsigned long ldate;

String nmea[15];
String labels[12] {"Time: ", "Status: ", "Latitude: ", "Hemisphere: ", "Longitude: ", "Hemisphere: ", "Speed: ", "Track Angle: ", "Date: "};
void setup() {
  Serial.begin(9600);
  GPSModule.begin(9600);
  while (!Serial);

  Serial.println("CAN Sender");

  // start the CAN bus at 500 kbps
  if (!CAN.begin(500E3)) {
    Serial.println("Starting CAN failed!");
    while (1);
  }
} 

void loop() {
  Serial.flush();
  GPSModule.flush();
  while (GPSModule.available() > 0)
  {
    GPSModule.read();

  }
  if (GPSModule.find("$GPRMC,")) {
    String tempMsg = GPSModule.readStringUntil('\n');
    for (int i = 0; i < tempMsg.length(); i++) {
      if (tempMsg.substring(i, i + 1) == ",") {
        nmea[pos] = tempMsg.substring(stringplace, i);
        stringplace = i + 1;
        pos++;
      }
      if (i == tempMsg.length() - 1) {
        nmea[pos] = tempMsg.substring(stringplace, i);
      }
    }
    updates++;
  
    nmea[2] = ConvertLat();
    nmea[4] = ConvertLng();

    nPos = ConvertLat().length();
    ConvertLat().toCharArray(sData,nPos); //latitude into CAN message
    fLatitude= ((float)(sData[nPos] - ASCIINULL)*10)+((float)(sData[nPos+1] - ASCIINULL))+((float)(sData[nPos+3] - ASCIINULL)/ 10)+
                ((float)(sData[nPos+4] - ASCIINULL)/ 100)+((float)(sData[nPos+5] - ASCIINULL)/ 1000)+((float)(sData[nPos+6] - ASCIINULL) / 10000)+
                 ((float)(sData[nPos+7] - ASCIINULL) / 100000)+((float)(sData[nPos+8] - ASCIINULL) / 1000000);
   fLatitude = fLatitude + 210;
  lLatitude = (unsigned long)(fLatitude * 10000000);
  pGPSData[0] = ((unsigned char)(lLatitude & 0x000000FF));
  pGPSData[1] = ((unsigned char)((lLatitude & 0x0000FF00) >> 8));
  pGPSData[2] = ((unsigned char)((lLatitude & 0x00FF0000) >> 16));
  pGPSData[3] = ((unsigned char)((lLatitude & 0xFF000000) >> 24));

  nPos = ConvertLng().length();
  ConvertLng().toCharArray(sData,nPos);
  fLongitude = ((float)(sData[nPos] - ASCIINULL)*100)+((float)(sData[nPos+1] - ASCIINULL)*10)+((float)(sData[nPos+2] - ASCIINULL))
               +((float)(sData[nPos+4] - ASCIINULL)/ 10)+((float)(sData[nPos+5] - ASCIINULL)/ 100)+((float)(sData[nPos+6] - ASCIINULL)/ 1000)
               +((float)(sData[nPos+7] - ASCIINULL) / 10000)+((float)(sData[nPos+8] - ASCIINULL) / 100000)+((float)(sData[nPos+9] - ASCIINULL) / 1000000);
  fLongitude = fLongitude + 210;
  lLongitude = (unsigned long)(fLongitude * 10000000);
  pGPSData[4] = ((unsigned char)(lLongitude & 0x000000FF));
  pGPSData[5] = ((unsigned char)((lLongitude & 0x0000FF00) >> 8));
  pGPSData[6] = ((unsigned char)((lLongitude & 0x00FF0000) >> 16));
  pGPSData[7] = ((unsigned char)((lLongitude & 0xFF000000) >> 24));
    Serial.print("Sending extended packet ... ");
    //CAN.write(buf,9);
    CAN.beginExtendedPacket(0x18FEF31C);
   
    CAN.write(pGPSData[0]);
    CAN.write(pGPSData[1]);
    CAN.write(pGPSData[2]);
    CAN.write(pGPSData[3]);
    CAN.write(pGPSData[4]);
    CAN.write(pGPSData[5]);
    CAN.write(pGPSData[6]);
    CAN.write(pGPSData[7]);
    CAN.endPacket();
    

    // time into CAN message
    
  nmea[0].toCharArray(sData,10);
  ltime = (unsigned long)(((float)(sData[nPos+4] - ASCIINULL)*10)+(float)(sData[nPos+5] - ASCIINULL));
  pGPStime[0] = ((unsigned char)((ltime* 4) & 0xFF));
  ltime = (unsigned long)(((float)(sData[nPos+2] - ASCIINULL)*10)+(float)(sData[nPos+3] - ASCIINULL));
  pGPStime[1] = (unsigned char)(ltime & 0xFF);
  ltime = (unsigned long)(((float)(sData[nPos] - ASCIINULL)*10)+(float)(sData[nPos+1] - ASCIINULL));
  pGPStime[2] = ((unsigned char)(ltime & 0xFF));

  nmea[8].toCharArray(sData,10);
  ldate = (unsigned long)(((float)(sData[nPos+2] - ASCIINULL)*10)+(float)(sData[nPos+3] - ASCIINULL));
  pGPStime[3] = ((unsigned char)(ldate & 0xFF));
  ldate = (unsigned long)(((float)(sData[nPos] - ASCIINULL)*10)+(float)(sData[nPos+1] - ASCIINULL));
  pGPStime[4] = ((unsigned char)((ldate *4) & 0xFF));
  ldate = (unsigned long)((float)(sData[nPos+4] - ASCIINULL)*10)+(float)(sData[nPos+5] - ASCIINULL);
  pGPStime[5] = ((unsigned char)(ldate & 0xFF));
  pGPStime[6] = 0x00 ;
  pGPStime[7] = 0x00 ;
  
    Serial.print("Sending extended packet ... ");
    //CAN.write(buf,9);
    CAN.beginExtendedPacket(0x18FEE61C);
   
    CAN.write(pGPStime[0]);
    CAN.write(pGPStime[1]);
    CAN.write(pGPStime[2]);
    CAN.write(pGPStime[3]);
    CAN.write(pGPStime[4]);
    CAN.write(pGPStime[5]);
    CAN.write(pGPStime[6]);
    CAN.write(pGPStime[7]);
    CAN.endPacket();
    
    for (int i = 0; i < 9; i++) {
      Serial.print(labels[i]);
      Serial.print(nmea[i]);
      Serial.println("");
    }

  }
  else {

    failedUpdates++;

  }
  stringplace = 0;
  pos = 0;
}

String ConvertLat() {
  String posneg = "";
  if (nmea[3] == "S") {
    posneg = "-";
  }
  String latfirst;
  float latsecond;
  for (int i = 0; i < nmea[2].length(); i++) {
    if (nmea[2].substring(i, i + 1) == ".") {
      latfirst = nmea[2].substring(0, i - 2);
      latsecond = nmea[2].substring(i - 2).toFloat();
    }
  }
  latsecond = latsecond / 60;
  String CalcLat = "";

  char charVal[9];
  dtostrf(latsecond, 4, 6, charVal);
  for (int i = 0; i < sizeof(charVal); i++)
  {
    CalcLat += charVal[i];
  }
  latfirst += CalcLat.substring(1);
  latfirst = posneg += latfirst;
  //a = latfirst.toFloat();
  //lati = (a+c)*d;
  //latfirst = lati;
  return latfirst;
}

String ConvertLng() {
  String posneg = "";
  if (nmea[5] == "W") {
    posneg = "-";
  }

  String lngfirst;
  float lngsecond;
  for (int i = 0; i < nmea[4].length(); i++) {
    if (nmea[4].substring(i, i + 1) == ".") {
      lngfirst = nmea[4].substring(0, i - 2);
      //Serial.println(lngfirst);
      lngsecond = nmea[4].substring(i - 2).toFloat();
      //Serial.println(lngsecond);

    }
  }
  lngsecond = lngsecond / 60;
  String CalcLng = "";
  char charVal[9];
  dtostrf(lngsecond, 4, 6, charVal);
  for (int i = 0; i < sizeof(charVal); i++)
  {
    CalcLng += charVal[i];
  }
  lngfirst += CalcLng.substring(1);
  lngfirst = posneg += lngfirst;
  
  //b = lngfirst.toFloat();
  //longi = (b+c)*d;
  //lngfirst= longi;
  return lngfirst;
}

How to I display the data in HEX decimal form on the receiver side.
Below is the code on the receiver side

// Copyright (c) Sandeep Mistry. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

#include <CAN.h>

void setup() {
  Serial.begin(9600);
  while (!Serial);

  Serial.println("CAN Receiver");

  // start the CAN bus at 500 kbps
  if (!CAN.begin(500E3)) {
    Serial.println("Starting CAN failed!");
    while (1);
  }
}

void loop() {
  // try to parse packet
  int packetSize = CAN.parsePacket();

  if (packetSize) {
    // received a packet
    Serial.print("Received ");

    if (CAN.packetExtended()) {
      Serial.print("extended ");
    }

    if (CAN.packetRtr()) {
      // Remote transmission request, packet contains no data
      Serial.print("RTR ");
    }

    Serial.print("packet with id 0x");
    Serial.print(CAN.packetId(), HEX);

    if (CAN.packetRtr()) {
      Serial.print(" and requested length ");
      Serial.println(CAN.packetDlc());
    } else {
      Serial.print(" and length ");
      Serial.println(packetSize);

      // only print packet data for non-RTR packets
      while (CAN.available()) {
        Serial.print((char)CAN.read());
      }
      Serial.println();
    }

    Serial.println();
  }
}