笔趣阁 > 科幻小说 > 编程之战 > 章节目录 第一百二八章 地图压缩(中)

 推荐阅读: 重生弃少归来 黎明之剑 说好的末世呢 七根凶简 民调局异闻录之勉传 学霸的黑科技系统 无限英灵神座 快穿攻略,病娇男主,宠翻天! 终极透视眼 纵横诸天的武者

编程之战 第一百二八章 地图压缩(中)


    “阿历克斯,再想想别的法子吧”,牛仔央求地说道。
    “唉,好吧”,杨成只好单手托腮,开始了思考。
    地图信息实例像这样:
    [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个逗号。
    这个方法是切实可行的,但还有更好的办法!

温馨提示:方向键左右(← →)前后翻页,上下(↑ ↓)上下滚用, 回车键:返回列表

上一章章节目录下一章