具有对ByteArray的索引访问的ActionScript3符号扩展

时间:2009-12-19 19:01:29

标签: actionscript bytearray

在以下代码中:

var bytes:ByteArray = new ByteArray();

var i:int = -1;
var j:int;

bytes[0] = i;    // bytes[0] = -1 == 0xff
j = bytes[0];    // j == 255;

int j以值255结束,而不是-1。我似乎无法找到一个文档来定义如何对ByteArray进行索引访问以进行符号扩展 - 我可以可靠地假设这种行为,还是应该采取措施将这些值截断为8位数量?我正在从Java移植一堆代码,并且更喜欢使用索引访问而不是readByte()等方法。

1 个答案:

答案 0 :(得分:0)

IDataInput接口(由ByteArray实现)说:

  

签名扩展仅在您读取数据时才有意义,而不是在您编写数据时。因此,您不需要单独的写入方法来使用IDataInput.readUnsignedByte()和IDataInput.readUnsignedShort()。

同样适用于[]数组访问,因此在编写之前不需要截断。

我看不到任何明确的文档,也没有说明数组读访问是无符号的。如果您想确保读取权限为您提供无符号值,您可以说:

j= j<<24>>>24;

>>类似,用于签名。但是,如果ActionScript是单个实现,而不是通用标准,那么您可能不必担心它