Непонимаю почему так, поясните пожалуйста.
CODE
typedef union
{
float f;
unsigned char a [sizeof (float)];
} bd_float;
unsigned char UART0_SendFloat( float f ){
unsigned char tmp;
bd_float valueToSend;
valueToSend.f = f;
for( i = 0 ; i < 4; i++ ){
tmp = valueToSend.a[i];
UART0_SendChar( tmp );
}
return 0;
}
Ставлю точку остановки на цикл, и вижу что это float представляется как
valueToSend = {
f = 40
a = { 0x00, 0x00, 0x40, 0x42 }
}
valueToSend = {
f = -352
a = { 0x00, 0x00, 0xB0, 0xC3 }
}
Почему у него такое странное представление? Пробовал через указатель на массив из 4х символов -- два первых байта все равно пусты. Естественно, когда я это склейваю на приемнике получаются совсем не эти числа...