- Code: Select all Expand view
- int _fieeetomsbin(float *src4, float *dest4)
{
unsigned char *ieee = (unsigned char *)src4;
unsigned char *msbin = (unsigned char *)dest4;
unsigned char sign;
unsigned char msbin_exp = 0x00;
int i;
/* See _fmsbintoieee() for details of formats */
sign = ( unsigned char ) ( ieee[3] & 0x80 );
msbin_exp |= ( unsigned char ) ( ieee[3] << 1 );
msbin_exp |= ( unsigned char ) ( ieee[2] >> 7 );
/* An ieee exponent of 0xfe overflows in MBF */
if (msbin_exp == 0xfe) return 1;
msbin_exp += ( unsigned char ) 2; /* actually, -127 + 128 + 1 */
for (i=0; i<4; i++) msbin[i] = 0;
msbin[3] = msbin_exp;
msbin[2] |= sign;
msbin[2] |= ( unsigned char ) ( ieee[2] & 0x7f );
msbin[1] = ieee[1];
msbin[0] = ieee[0];
return 0;
}
EMG