在以下代码中:
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()等方法。
答案 0 :(得分:0)
IDataInput接口(由ByteArray实现)说:
签名扩展仅在您读取数据时才有意义,而不是在您编写数据时。因此,您不需要单独的写入方法来使用IDataInput.readUnsignedByte()和IDataInput.readUnsignedShort()。
同样适用于[]
数组访问,因此在编写之前不需要截断。
我看不到任何明确的文档,也没有说明数组读访问是无符号的。如果您想确保读取权限为您提供无符号值,您可以说:
j= j<<24>>>24;
与>>
类似,用于签名。但是,如果ActionScript是单个实现,而不是通用标准,那么您可能不必担心它