Я предполагаю, что трудность заключается в конвертации между Big Endian и Little Endian.
Эта статья должна помочь вам с преобразованиями Endian. Он содержит код для замены порядка байтов на целые числа, длинные целые числа, числа с плавающей запятой и массивы байтов произвольной длины.
http://www.codeproject.com/KB/cpp/endianness.aspx
Код для замены произвольного типа выглядит следующим образом:
#include <algorithm> //required for std::swap
#define ByteSwap5(x) ByteSwap((unsigned char *) &x,sizeof(x))
void ByteSwap(unsigned char * b, int n)
{
register int i = 0;
register int j = n-1;
while (i<j)
{
std::swap(b[i], b[j]);
i++, j--;
}
}