簡體   English   中英

讀取ActionScript 3中的二進制C float?

[英]Read binary C float in Actionscript 3?

我有二進制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); // I need code for ParseFloat() 

AS3 Number類符合IEEE 754 ,並且與Javascript Number類相同。

我沒有搜索AS3庫,而是挖掘了一些Java代碼,這些代碼僅需在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滿足了我的大部分需求(可能需要事先進行一些移位)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM