设为首页收藏本站

Erlang中文论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 22648|回复: 3
打印 上一主题 下一主题

持续更新。。。。

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-16 01:12:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  今天小弟又来分享我今天遇到的一段代码这个函数用来解压BIn(二进制)的数据

decode(Count,Bin) ->

   Fun = fun(_,{<<Data:16/big-integer-unsigned,AccBin/binary>>,List}) ->
            {AccBin,[Data|Lst]}
             end,
    lists:foldl(Fun,{Bin,[]},lists:duplicate(Count,0)).
以下就是我的感觉:
   首先我先解释下lists:duplicate/2 这个新出现的函数作用就是创建出Count个0的列表,
大家可以查看这个网站得到更深的解释。上边的函数fun/2中的第一个参数用_表示是因为
我们并不关心由lists:duplicate(Count,0)抽取出来的0,重点我们应该集中在第二个参数,它将
我们传进的Bin分成了<<Data:16/big-integer-unsigned,AccBin/binary>>从而匹配出我们所需
的Data,接着就把这个Date放到List;AccBin就是用于下次循环作为被分解的Bin。就这么少
的几段代码就运用了lists中的二个函数,并将数据取出,这是不是很巧妙呢!大家可以在平
时使用这种方法。(复制并不可耻,重要的是能在过程将知识变为自己的~~来自我老师)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

沙发
发表于 2015-1-16 16:44:08 | 只看该作者
北京西二旗招聘erlang游戏服务器主程
欢迎推荐或自荐:qq:1961206143
[email protected]
回复 支持 反对

使用道具 举报

板凳
发表于 2015-1-17 17:27:23 | 只看该作者
  high佬全  加油
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2015-1-19 23:06:38 | 只看该作者

谢谢啊,不过我漏了一天没写,有时间再补回
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Erldoc.com  

GMT+8, 2024-11-1 07:55 , Processed in 0.340041 second(s), 10 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表