Search code examples
chexmicrocontrolleresp32

Convert Hex to Decimal from char array


I have a CHAR buffer That contains some hex value first of all i want to concatenate every 2 successive elements of the array then convert it to Decimal for example i have recvbuf[i] = d and recvbuf[i+1] = 60 >>> recvbuf[i] = d60 (hex value) >>> recvbuf[i] =3424 (in decimal)

i started with this :

recvbuf[i]=recvbuf[i]&recvbuf[i+1];

can you help convert recvbuf[i] to Decimal value please


Solution

  • While your question lacks some information, I try to provide an answer for what I have understood.

    #include <stdio.h>
    #include <stdint.h>
    
    #define NUM_VALUES 5
    int main(void)
    {
      uint8_t input_data[NUM_VALUES * 2] = {1, 2, 0x0d, 0x60, 5, 6, 7, 8, 9, 10};
      uint16_t result_data[NUM_VALUES];
    
      for (int i = 0; i < NUM_VALUES; i++)
      {
        result_data[i] = (uint16_t)input_data[2*i] << 8 | input_data[2*i+1];
        printf("result[%d] = 0x%04x == %5u\n", i, result_data[i], result_data[i]);
      }
    }
    
    

    Output:

    ~/tests$ ./test
    result[0] = 0x0102 ==   258
    result[1] = 0x0d60 ==  3424
    result[2] = 0x0506 ==  1286
    result[3] = 0x0708 ==  1800
    result[4] = 0x090a ==  2314
    

    As you can see, hex and decimal are only representation of the same value.