我正在尝试为自己创建一种文件格式,因此我正在为我的文件形成标题。要将已知长度的字符串写入 ByteArray,我应该使用哪种方法,writeUTF() 或 writeUTFBytes()。
根据 Flex 3 语言引用,它告诉我 writeUTF() 会预先考虑字符串的长度并引发 RangeError,而 writeUTFBytes() 则不会。
如有任何建议,我们将不胜感激。
最佳答案
两者之间的唯一区别是 writeUTFBytes()
不会在消息前面加上字符串的长度(RangeError 是因为 65535 是您可以在 16 位中存储的最大数字)
您在哪里使用其中一种取决于您正在做什么。例如,我在复制要压缩的 XML 对象时使用 writeUTFBytes()。在这种情况下,我不关心字符串的长度,它会在代码中引入一些额外的内容。
writeUTF()
如果您正在编写流媒体/网络服务器,当您在消息中添加消息长度前缀时,您就知道之前要在另一端传输多少字节消息的结尾。例如,我有 200 字节的消息。我读取了长度(16 位整数),它告诉我该消息是 100 字节。我读了 100 个字节,我知道这是一条完整的消息。之后的一切都是另一条消息。如果消息长度表明消息为 300 字节,那么我就知道我必须等待一段时间才能收到完整消息。
关于apache-flex - 何时在 AS3 的 ByteArray 中使用 writeUTF() 和 writeUTFBytes(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5552277/