how to use writeUTF & writeUTFBytes

将中文保存为二进制数据可以用ByteArray的两个方法:writeUTF、writeUTFBytes。

writeUTF(value:String) :将 UTF-8 字符串写入字节流。先写入以字节表示的 UTF-8 字符串长度(作为 16 位整数),然后写入表示字符串字符的字节。
因为先把字符长度写入二进制,16位能保存的字节长度为65535,超出这个长度会报RangeError。

writeUTFBytes(value:String):不添加字节长度直接写入字符串的字节数据。因此在读取的时候需要指定字节长度。

readUTF ():读出一个UTF串。

readUTFBytes(length:uint):需要指定要读出多少个字节,这个就比较麻烦,因为不同的字符UTF码所占字节个数不同,数字、字母是长度为1字节,中文可能为3个字节。如果手动计算中英文混合的字符串字节长度很麻烦,谁用这种方式来读字节流?

var pos0:int = ba.position;
ba.writeUTF("234中");
var pos1:int = ba.position;
ba.writeUTFBytes("567中国");
trace(ba.position - pos1, "567中国".length);//9 5

ba.position = pos0;
str = ba.readUTF();//"234中"
ba.position = pos1;
var str:String = ba.readUTFBytes(9);//"567中国"

也可以用这种方式读写字符集:
writeMultiByte(value:String, charSet:String):void
readMultiByte(length:uint, charSet:String):String

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值