2013-05-28 25 views
0

我將一些C#解壓縮代碼移植到AS3,並且由於它做了一些非常複雜的工作,它使用了一系列數據類型,如byteshort。問題是,AS3沒有這些數據類型。AS3中的C#數據類型

大多數情況下,我可以使用uint來保存這些值。然而,在一些點,我收到一條線,如:

length[symbol++] = (short)len; 

據我瞭解,這意味着len必須閱讀並分配給length陣列作爲short。所以我想知道,我如何在AS3中執行此操作?我猜或許要這樣做:

length[symbol++] = len & 0xFF; 

但我不確定這是否會給出正確的結果。

所以基本上,我的問題是:我如何確保在AS3中做這種東西時保持正確的字節數?也許我應該用ByteArray代替?

回答

0

根據轉換爲C#代碼的原因,您可能需要也可能不需要保留在AS3代碼中。如果演員陣容純粹是將類型調整爲length陣列元素的類型(即沒有精度損失),則不需要演員陣容。如果len實際上可能大於0x7FFF,則需要執行一些轉換。

我認爲ByteArray可能是一個合理的選項,如果您需要處理類似於C#StreamReader的結果,隨機訪問可能比必要的更難。

請注意,short是2個字節長(System.Int16的同義詞),所以要使用位操作轉換爲它需要執行& 0xFFFF。如果在有符號和無符號類型之間進行轉換,也要非常小心......

+0

噢對不起,我的意思是0xFFFF而不是0xFF。我正在考慮使用'ByteArray',但問題是我需要將該值作爲單個數值變量,而不是字節數組。那麼'&0xFFFF'會給出一個理想的結果? – puggsoy