Saludos a todos/as,
Tiene FW alguna funcion para pasar un signed float (double 8 bytes) a binario, de forma similar a como lo hace W2BIN() con los signed integer de 2 bytes??
Harbour no la tiene.
Gracias!!
Doble a Binario
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Prueba con esta función:
Code: Select all
HB_FUNC( F2BIN )
{
char szString[ 4 ];
if( ISNUM( 1 ) )
{
float fValue = ( float ) hb_parnd( 1 );
szString[ 0 ] = ( fValue & 0x00FF );
szString[ 1 ] = ( fValue & 0xFF00 ) >> 8;
szString[ 2 ] = ( fValue & 0x00FF0000 ) >> 16;
szString[ 3 ] = ( fValue & 0xFF000000 ) >> 24;
}
else
{
szString[ 0 ] = '\0';
}
hb_retclen( szString, 4 );
}
Antonio he intentado compilar y me da 4 errores:
Error E2060 prueba.prg 10: Illegal use of floating point in function HB_FUN_F2BIN.
Error E2060 prueba.prg 11: Illegal use of floating point in function HB_FUN_F2BIN.
Error E2060 prueba.prg 12: Illegal use of floating point in function HB_FUN_F2BIN.
Error E2060 prueba.prg 13: Illegal use of floating point in function HB_FUN_F2BIN.
Correspondientes a cada asignación en el array szString
Estoy compilando con Borland C++ 5.51 y Harbour Alpha 45.0
Error E2060 prueba.prg 10: Illegal use of floating point in function HB_FUN_F2BIN.
Error E2060 prueba.prg 11: Illegal use of floating point in function HB_FUN_F2BIN.
Error E2060 prueba.prg 12: Illegal use of floating point in function HB_FUN_F2BIN.
Error E2060 prueba.prg 13: Illegal use of floating point in function HB_FUN_F2BIN.
Correspondientes a cada asignación en el array szString
Estoy compilando con Borland C++ 5.51 y Harbour Alpha 45.0
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Mucho más simple:
Code: Select all
HB_FUNC( F2BIN )
{
float fValue = hb_parnd( 1 );
hb_retclen( ( char * ) &fValue, 4 );
}
Antonio,
Ahora si parece funcionar pero necesito que devuelva un float con signo de doble presición o sea 8 bytes no 4.
Hay alguna manera de incluir esta función en un .hrb? al compilar y ejecutar si me reconoce la función f2bin() pero si intento ejecutarlo con hbrun me falla me dice que no conoce o no esta registrado el símbolo f2bin.
Ahora si parece funcionar pero necesito que devuelva un float con signo de doble presición o sea 8 bytes no 4.
Hay alguna manera de incluir esta función en un .hrb? al compilar y ejecutar si me reconoce la función f2bin() pero si intento ejecutarlo con hbrun me falla me dice que no conoce o no esta registrado el símbolo f2bin.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact: