Hex To Ascii String

Hi All,

Before any of you stated that this is a duplicate topics, please read on because I can assure you it is not.
I had search numerous time for the solution and I still couldnt find any in the forum. So, please bear with me and read on.

Situation :

  1. I got a reply from serial device with the following data (hex) :
    30
    44
    42
    45

  2. I store all of the data into an array. Lets call it arrayA.

arrayA[0] 0x30
arrayA[1] 0x44
arrayA[2] 0x42
arrayA[3] 0x45
  1. So, I need to convert that to ascii :
0x30 0x44 0x42 0x45
0 D B E

I use this function :

int DecToHexStr (int Nilai)
{   
             if ((Nilai >=48) && (Nilai <=57)) //0-9
             {
                   int HexNilai;
                   HexNilai = Nilai - '0';
                   return HexNilai;
             }
             else if ((Nilai >=65) && (Nilai <=70))
             {
                   char HexNilaiB;
                   if (Nilai == 65) HexNilaiB = 65;
                   if (Nilai == 66) HexNilaiB = 66;
                   if (Nilai == 67) HexNilaiB = 67;
                   if (Nilai == 68) HexNilaiB = 68;
                   if (Nilai == 69) HexNilaiB = 69;
                   if (Nilai == 70) HexNilaiB = 70;
                   return HexNilaiB;
             }
}
  1. So, we will get :
    0DBE

But, “DBE” is still not stored as character.
5. How can I combined all of the “0”,“D”,“B”,“E” to become one hex number = 0x0DBE
6. And Convert it to decimal so that I can send the value trough serial port?

Have you seen this. http://www.theskyway.net/en/converting-hex-as-a-string-to-actual-hex-values/

LarryD: Have you seen this. http://www.theskyway.net/en/converting-hex-as-a-string-to-actual-hex-values/

Thanks for the link and quick reply!. I will be looking into it.

No conversion needed. Just make sure you're using a char type and simply print them.

Try this and see what happens:

char c = 0x44;

Serial.print(c);

I bet it prints you a 'D'.

Or even:

char anArray[] = {0x30, 0x42, 0x44, 0x45, 0x00};  // Gotta add a zero on the end to make it work

Serial.println(anArray);

That should print "OBDE" to the monitor.