`
wangangie36
  • 浏览: 38171 次
  • 性别: Icon_minigender_2
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类

flash与后台交互时的数据压缩浅析

阅读更多

 问题:有如下一段字符串,需要提交到后台做保存。为了提高传输速率,降低文件大小,需要将该字符串进行压缩。
"25a133ad,25a133,25a133,25a133,25a133au,230a105ad,230a105,230a105,240a105,259a105,274a105,303a105,323a105,  
337a105,345a105,347a105,348a105,348a105,348a105,348a105au,274a128ad,274a128,273a135,270a160,268a179,265a196,  
263a207,261a215,261a217,261a217,261a217,261a217,261a217,261a217,261a217au,305a128ad,305a128,308a136,316a159,  
322a181,325a199,327a206,327a206,327a206,327a206au,232a154ad,233a154,247a155,266a156,289a156,310a155,324a155,  
335a155,339a155,339a155,339a155,339a155,339a155,339a155,339a155au,44a137ad,44a137,44a137,44a137au,419a130ad,  
419a130,420a131,428a141,435a146,442a152,445a156,453a162,459a164,462a165,462a165,462a166,461a165,457a160,448a149,  
445a146,444a145,444a145,443a145,443a146,445a152,449a158,455a159,457a159,465a156,474a151,478a150,481a148,482a148,  
482a148,482a152,481a166,481a171,481a171,482a170,484a159,487a152,489a150,489a149,489a149,489a149,489a149,489a149,                
489a149,489a149,489a149,489a149,489a149,489a149,489a149au,35a285ad,35a285,35a285,35a285,35a285au,560a138ad,  
560a138,568a148,577a159,584a168,591a175,598a182,599a183,599a183,599a183,598a180"
利用无损压缩算法,将字符串进行压缩,非常耗时间,as2实现起来比较勉强,是不是可以另寻捷径呢?
突破口:flash中的字符串都是用unicode编码的,每个字符占用2个字节(16bit),例如 “ABC”,unicode编码是0x0041,0x0042,0x0043。英文和标点符号占用了0x0000~0x0080这128个位置(实际上前面还有保留空位)。再观察一下我们要处理的数据,只有0~9,a,u,d,w,.,,一共是16种符号,如果建立一个字符字典的话,可以写成这样:dic=["0","1",......","],这样一来,可以根据数组下标来获取任意字符,例如要获取"3",就是dic[4]。
有了自定义的字符字典,就开始字符转换啦:
1. 先把原始字符串的逗号都去掉,然后变成四个一组。2a51 33ad ,25a.....一直到最后,不足四位的用字典的第一个字符补齐,并记住补了几个字符su_num。
2. 写一个函数getIDFromDic(_str:String):Number,来查找每个字符对应的下标。
2. 将每组字符串转化成一个unicode字符:String.fromCharCode(getIDFromDic("2")
var dic:Array = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", ",", "a", "u", "d", "w"];        
function getIDFromDic(_str:String):Number {        
 var len:Number = dic.length;        
 for (var i:Number = 0; i
本文转自:http://www.5uflash.com/flashjiaocheng/Flashyuweb/2095.html
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics