вот допиливайте :
| Код | #include <iostream>
typedef unsigned char data_t[8]; data_t src = { 50, 57, 54, 70, 52, 69, 52, 49 };
unsigned char make_byte (unsigned char hi, unsigned char lo) { return ( hi << 4 ) | lo; } unsigned char c2h (unsigned char c) { if ( '0'<=c && c<='9' ) return c-'0'; if ( 'a'<=c && c<='f' ) return c-'a' + 10; if ( 'A'<=c && c<='F' ) return c-'A' + 10; return 0xff; // error }
float get_float (data_t d) { // union helper { float f; unsigned char b[4]; // check: sizeof (float) == 4 } h; for (int i=0, j=0; i<4; ++i, j+=2) { h.b[i] = make_byte (c2h(d[j]) ,c2h(d[j+1])); } return h.f; }
int main () {
std::cout << get_float (src); }
|
|