2013-05-28 23 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