我必须读取以不同方式写入的字节序列(writeBite,writeShort和writeMultiByte),并显示它们在视频上具有HEX字节列表。 我的问题是转换数字1500,我尝试了其他数字,结果是正确的... 这是一个例子:
var bytes:Array = [];
var ba:ByteArray = new ByteArray();
ba.writeShort(1500);
ba.position = 0;
for (var i=0; i<ba.length; i++)
{
bytes.push(ba.readByte().toString(16));
}
trace(bytes);//5,-24 i'm expetting 5,DC
答案 0 :(得分:1)
方法readByte
读取带符号的字节(范围从-128到127)。最重要的位定义了符号。如果数字大于127
(如DC
),该位将为1
,并且该数字将被视为负数。 否定字节的two's complement用于获取签名值。如果DC
为二进制1101 1100
,则补码为0010 0011
,即23
。添加一个,该值将被视为否定,这将为您提供您所看到的-24
。
您应该使用readUnsignedByte来读取0到255之间的值。
答案 1 :(得分:0)
由于AS3中没有真正的字节类型,readByte()
返回一个int。你可以试试这个:
for (var i=0; i<ba.length; i++)
{
bytes.push(ba[i].toString(16));
}