2009-08-11 5 views
0

私はActionscript 3に読み込む必要があるバイナリのC/C++データ型(メモリ版のC浮動小数点数など)を持っており、これをゼロからコード化したくないと思います。Actionscript 3でバイナリC浮動小数点を読み取る?

これを助けるライブラリ、サンプルコード、擬似コードは誰でも知っていますか?例えば

C/C++アプリケーション:

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() 

答えて

0

もう少し掘り下げて、ByteArrayが私が必要としているものの大部分を持っていることを発見しました(おそらく、ビットシフトをしているかもしれません)。

0

AS3 NumberクラスはIEEE 754に準拠、およびJavaScript番号クラスと同一であります。

AS3ライブラリを検索するのではなく、AS3のマイナーな変更だけで動作するいくつかのJavascriptコードを探しました。 this site

私はこのかなり高密度のフロートパーサが見つかりました:

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); 
}; 

あなたはデバッグだけでなく、機能的であるためにあなたのコードを好む場合、あなたはthis codeではなく、より有用であることがあります。

関連する問題