Pregunta

Tengo tipos binarios de C / C ++ de datos (por ejemplo, en la versión de memoria de un flotador C) que necesito leer en Actionscript 3 y preferiría no codificar este desde cero.

Alguien sabe de ninguna biblioteca, código de ejemplo, pseudo código para ayudar con esto?

Por ejemplo:

C / C ++ aplicación:

float f = 1.1;
SaveFloatToFile(f, 'myfile.bin');

Actionscript 3 aplicación:

var ba:ByteArray = ReadFromFile('myfile.bin');
var f:Float = ParseFloat(ba); // I need code for ParseFloat() 
¿Fue útil?

Solución 2

He hecho un poco más a excavar alrededor y descubrió que ByteArray tiene la mayor parte de lo que necesito (posiblemente con algún desplazamiento de bits de antemano)

Otros consejos

El AS3 clase Número ajusta a IEEE 754 , y es idéntico a la clase número Javascript.

En lugar de búsqueda de bibliotecas de AS3, cavé alrededor por algún código Javascript que debería funcionar sólo con una pequeña modificación en AS3.

este sitio encontré esta alta densidad de flotación analizador lugar:

p.decodeFloat = function( data, precisionBits, exponentBits ){
    var b = new this.Buffer( this.bigEndian, data );
    b.checkBuffer( precisionBits + exponentBits + 1 );
    var bias = Math.pow( 2, exponentBits - 1 ) - 1, signal = b.readBits( precisionBits + exponentBits, 1 ), exponent = b.readBits( precisionBits, exponentBits ), significand = 0,
    divisor = 2, curByte = b.buffer.length + ( -precisionBits >> 3 ) - 1;
    do
        for( var byteValue = b.buffer[ ++curByte ], startBit = precisionBits % 8 || 8, mask = 1 << startBit; mask >>= 1; ( byteValue & mask ) && ( significand += 1 / divisor ), divisor *= 2 );
    while( precisionBits -= startBit );
    return exponent == ( bias << 1 ) + 1 ? significand ? NaN : signal ? -Infinity : +Infinity : ( 1 + signal * -2 ) * ( exponent || significand ? !exponent ? Math.pow( 2, -bias + 1 ) * significand : Math.pow( 2, exponent - bias ) * ( 1 + significand ) : 0 );
};

Si usted prefiere que su código sea depurable, así como funcional, puede encontrar este código para ser más útiles en su lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top