My approach would be the following:
byte buff[8];
char myArray[sizeof(buff)*2];
byte x;
void setup()
{
Serial.begin(9600);
buff[0] = 0x12;
buff[1] = 0x34;
buff[2] = 0x56;
buff[3] = 0x78;
buff[4] = 0x90;
buff[5] = 0x12;
buff[6] = 0x30;
buff[7] = 0xAB;
//----------------
hexToAscii();
myArray[sizeof(buff)*2] = 0x00; //null-byte
Serial.print(myArray); //output: 12345678901230AB
}
void loop()
{
}
void hexToAscii()
{
for (int i = 0, j = 0; i < 8, j < 16; i++, j++)
{
x = buff[i]; //x = 12
x = x >> 4; // x= 01
if ((x >= 0) && (x <= 9))
{
myArray[j] = x + 0x30; //0x30 - 0x39 = 0 - 9
j = j + 1;
}
else
{
myArray[j] = x + 0x37; //0x41 - 0x46 = A - F
j = j + 1;
}
//-------------------------------------
x = buff[i]; //x = 12
x = x & 0x0F; // x= 02
if ((x >= 0) && (x <= 9))
{
myArray[j] = x + 0x30; //0x30 - 0x39 = 0 - 9
//j = j+1;
}
else
{
myArray[j] = x + 0x37; //0x41 - 0x46 = A - F
//j = j+1;
}
}
}