Kompletten HEX-String ausgeben; HEX zu float

char pieces[4] = { "00", "00", "B4", "41" };

Das ist syntaktischer Unfug und kompiliert nicht.

Generell macht man eine Hex -> Integer Wandlung mit strtoul():
http://www.cplusplus.com/reference/cstdlib/strtoul/

Ich lasse das mal außen vor und konzentriere mich auf Integer Array nach Float:

unsigned char pieces[] = { 0x41, 0xB4, 0x00, 0x00 };
unsigned long i = pieces[0] << 24 | pieces[1] << 16 | pieces[2] << 8 | pieces[3];
float f = *(float*)&i;

Setzt erst ein Integer Array zu einem einzelnen Integer zusammen.

Dann nimmt die Adresse des Integer, castet diesen auf einen Zeiger auf Float und dereferenziert den Zeiger