黑岩文学

字:
关灯 护眼
黑岩文学 > 编程之战 > 第一百二八章 地图压缩(中)

第一百二八章 地图压缩(中)

  第一百二八章 地图压缩(中) (第1/1页)
  
  “阿历克斯,再想想别的法子吧”,牛仔央求地说道。
  
  “唉,好吧”,杨成只好单手托腮,开始了思考。
  
  地图信息实例像这样:
  
  [true, true, true, false, true ]
  
  [false, false, true, false, false]
  
  [true, false, true, false, true ]
  
  [true, false, false, false, true ]
  
  [true, true, true, true, true ]
  
  这是一个5X5的矩阵。
  
  其中true代表可通行的区域,false标注的区域无法通行。
  
  那么,怎么把这个地图实例转为手机存储呢?
  
  一种最简单的方法,是把这个实例序列化为字符串,就像这样:
  
  “[[true,true,true,false,true],[false,false,true,false,false],[true,false,true,false,true],[true,false,false,false,true],[true,true,true,true,true]]“
  
  这种方法很有效,但缺点也很明显。
  
  占用的存储空间太多了,远远超过了10个字符的长度。
  
  所以,必须想一个方法,对地图信息进行压缩。
  
  杨成通过观察,发现了一种比较好的压缩方法。
  
  使用二进制!
  
  true可以用数字1来替代,false用数字0来替代。
  
  那么矩阵就成了0和1构成的数字矩阵。
  
  然后,将矩阵的每一行,看作是二进制数字。
  
  比方说,第一行:
  
  [true, true, true, false, true ]
  
  替换成数字:
  
  [1, 1, 1, 0, 1 ]
  
  看作二进制数字:
  
  “11101”
  
  然后将这个二进制数字,转换为36进制。
  
  得到小写字母“t”。
  
  这样,足足减少了4个字符,达到了压缩的目的!
  
  对矩阵的每一行都这么处理,就可以得到5个36进制字符。
  
  再将这5个字符用逗号分割开来,以表明行结束。
  
  总共只需要5+4=9个字符,其中包括4个逗号。
  
  这个方法是切实可行的,但还有更好的办法!
『加入书签,方便阅读』
热门推荐
我的恐怖猛鬼楼 夏日赞歌 剑道第一棺 为了长生,我挖自家祖坟 修行,从变成反派开始 谁与争锋 最强末日系统 三国之无赖兵王 了不起的盖慈比 仙尊天幽