How do you propose to convert an entire packet from big endian to little endian if you don't do it piece-by-piece? Is the application supposed to automagically know which parts of the packet are 32-bit ints, which parts are 32-bit floats, and which parts are 64-bit GUIDs (or whatever), and reverse them each individually? No, you have to know the packet structure and reverse each individually, which is the only conclusion that makes any sense at all.
By the way:
Code:
char * sPacket = new char[PacketLength * 3];
for (int i = 0; i < PacketLength; i++)
snprintf((char *)(sPacket + i * 3), 3, "%02X ", packet[i]);
printf(sPacket);
delete sPacket;