C++ 在Actionscript 3中读取二进制C浮点?
我有二进制C/C++数据类型,例如内存中的C浮点版本,我需要将其读入Actionscript 3,我不希望从头开始编写代码 有人知道有什么库、示例代码、伪代码可以帮助实现这一点吗 例如: C/C++应用程序:C++ 在Actionscript 3中读取二进制C浮点?,c++,actionscript-3,file-io,floating-point,binary-data,C++,Actionscript 3,File Io,Floating Point,Binary Data,我有二进制C/C++数据类型,例如内存中的C浮点版本,我需要将其读入Actionscript 3,我不希望从头开始编写代码 有人知道有什么库、示例代码、伪代码可以帮助实现这一点吗 例如: C/C++应用程序: float f = 1.1; SaveFloatToFile(f, 'myfile.bin'); Actionscript 3应用程序: var ba:ByteArray = ReadFromFile('myfile.bin'); var f:Float = ParseFloat(ba)
float f = 1.1;
SaveFloatToFile(f, 'myfile.bin');
Actionscript 3应用程序:
var ba:ByteArray = ReadFromFile('myfile.bin');
var f:Float = ParseFloat(ba); // I need code for ParseFloat()
AS3类符合Javascript数字类,并且与Javascript数字类相同
我没有搜索AS3库,而是四处寻找一些Javascript代码,这些代码在AS3中只需稍加修改即可工作
在上,我发现了这个相当高密度的浮点解析器:
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 );
};
如果您希望代码具有可调试性和功能性,您可能会发现它更有用。我做了更多的研究,发现ByteArray拥有我所需要的大部分功能,可能需要事先进行一些移位