1

我想知道 writeInt 如何处理传递给它的 32 位无符号或有符号整数?

很容易理解它是如何与十六进制数一起工作的。Util.Print 将打印相应的 ASCII 字符。

0x41424344 将被分解为 4 个 1 字节字符,A、B、C 和 D。

将整数传递给 writeInt 时似乎有所不同。

例如,

var test: ByteArray = new ByteArray();
test.writeInt(0x41424344); // prints ABCD
test.writeInt(2590463591); // prints gVg
test.writeInt(1119885898);  // prints BÀJ

我不清楚 Util.Print 函数如何处理 writeInt 写入 ByteArray 的整数。

字符 gVg 不对应整数 2590463591

根据这里 writeInt 的定义:

http://livedocs.adobe.com/livecycle/es/sdkHelp/common/langref/flash/utils/ByteArray.html#writeInt%28%29

它声明它适用于 32 位有符号整数。

如果有人可以详细说明它将整数转换为字符的方式,那将会很有帮助。

编辑:它如何处理负整数?

例如,

test.writeInt(-11338743); // prints ÿRü 

所以,

-11338743 = 0xFF52FC09

那是对的吗?

谢谢。

4

1 回答 1

1

如果将编码字节解释为 ASCII

dec          hex          ascii
1094861636 = 0x41424344 = ABCD
2590463591 = 0x9A675667 = gVg
1119885898 = 0x42C01A4A = BÀJ

另外,请注意 int 与 unsigned int 将实现不同的功能:

var test:ByteArray = new ByteArray();
test.writeInt(0x41424344);
test.writeUnsignedInt(0x41424344);
于 2012-05-15T06:57:59.770 回答