0

我正在将一些 C# 解压缩代码移植到 AS3,因为它正在做一些非常复杂的事情,所以它使用了一系列数据类型,例如byteshort. 问题是,AS3 没有这些数据类型。

在大多数情况下,我可以uint用来保存这些值。但是,在某些时候,我会得到一条线,例如:

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

据我了解,这意味着len必须lengthshort. 所以我想知道,我将如何在 AS3 中做到这一点?我猜也许这样做:

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

但我不确定这是否会给出正确的结果。

所以基本上,我的问题是:在 AS3 中执行此类操作时,如何确保保持正确的字节数?也许我应该使用ByteArrays 代替?

4

1 回答 1

0

根据在 C# 代码中强制转换的原因,您可能需要也可能不需要在 AS3 代码中保持强制转换。如果强制转换纯粹是为了将类型调整为length数组元素的类型(即没有精度损失),那么您不需要强制转换。如果len实际上可以大于 0x7FFF,则需要执行一些转换。

ByteArray如果您需要处理类似于 C# 的结果,我认为这可能是一个合理的选择StreamReader,随机访问可能比必要的更难。

请注意,它short有 2 个字节长( 的同义词System.Int16),因此要使用您需要执行的位操作转换为它& 0xFFFF。如果在有符号和无符号类型之间进行转换,也要非常小心......

于 2013-05-28T04:33:20.223 回答