Если целевая архитектура имеет float32 в качестве представления и имеет тот же порядок байтов, что и исходный, то это так же просто, как:
float f;
unsigned char *b = (unsigned char *)&f;
b[0] = 0xa1;
b[1] = 0xb2;
b[2] = 0xc3;
b[3] = 0xd4;
printf("f is %f\n", f);
Если источник данных и ваша целевая архитектура имеют малый / большой порядок байтов несоответствие, просто поменяйте индексы на 3
... 0
. Если у вас есть другая странная устаревшая последовательность байтов, мне вас жаль.
Обратите внимание, что вы можете использовать memcpy
- для чего вам нужно будет использовать вспомогательный буфер, а не просто то, что выполняет итерацию байтов; или объединение, которое будет содержать больше кода и не обязательно совместимо с C ++.