我正在将一些C#解压缩代码移植到AS3,并且因为它正在做一些非常复杂的事情,所以它使用了一系列数据类型,例如byte
和short
。问题是,AS3没有这些数据类型。
在大多数情况下,我可以使用uint
来保存这些值。但是,在某些方面,我得到一条如下的行:
length[symbol++] = (short)len;
据我了解,这意味着必须读取len
并将其作为length
分配给short
数组。所以我想知道,我如何在AS3中这样做?我猜也许会这样做:
length[symbol++] = len & 0xFF;
但我不确定这是否能给出正确的结果。
所以基本上,我的问题是:在AS3中执行此类操作时,如何确保保持正确的字节数?也许我应该使用ByteArray
代替?
答案 0 :(得分:0)
根据使用C#代码进行强制转换的原因,您可能需要或不需要继续使用AS3代码。如果强制转换纯粹是为了将类型调整为length
数组的元素类型(即没有精度损失),则不需要强制转换。如果len
实际上可能大于0x7FFF,则需要执行一些演员。
我认为如果你需要处理类似于C#ByteArray
的结果,StreamReader
可能是一个合理的选择,随机访问可能比必要的更难。
请注意,short
长度为2个字节(System.Int16
的同义词),因此要使用位操作转换为它,您需要执行& 0xFFFF
。如果在有符号和无符号类型之间进行转换,也要非常小心......