[Erlang之旅 0006] 二进制位串

位串可以写作<< E1,E2....En>>,其中双小于号和双大于号之间可以包含零个或多个区段指示符,位串以比特位为单位的整体长度。区段指示符可以为以下形式之一:

Data | Data:Size | Data/TypeSpecifiers | Data:Size/TypeSpecifiers

TypeSpecifiers :  主要控制区段编解码的细节,它由一个或多个由(-)分隔的原子组成,例如 integer-unsigned-big 原子出现的顺序不重要,可以用的指示符如下,这些指示符可以有多种组合方式,但是每一组,只能出现一个。bits是bitstring的别名,bytes是binary的别名。对于integer、float、bitstring类型,尺寸单位是1比特位,binary是8比特位

integer | float | binary | bytes | bitstring | bits | utf8 | utf16 | utf32

signed | unsigned

big | little | native

55> f().
ok
56> Red = 2.
2
57> Green = 61.
61
58> Blue =20.
20
59> Mem = <<Red:5, Green:6, Blue:5>>.
<<23,180>>
60> <<R1:5, G1:6, B1:5>> = Mem.    %% 表示R1 取5bit, G1取6bit, B1 取5bit
<<23,180>>   00010 111|101 10100  %%前面5位是R1=2,中间6位是G1=61, 后面5位B1=20, 由于是8bit表示一位所以,最后的组合是23, 180
61> R1.
2
62> G1.
61
63> B1.
20
64> A=list_to_binary("CC002801").

<<"CC002801">>

65> <<B:2/binary,C:4/binary,_>> = A.

** exception error: no match of right hand side value <<"CC002801">>

66> <<B:2/binary,C:4/binary,_/binary>> = A.    %%B取2个单位,每单位为binary ,C取4单位,每单位binary

<<"CC002801">>

67> B.

<<"CC">>

68> C.

<<"0028">>

69>

[Erlang之旅 0006] 二进制位串

时间: 2024-11-05 18:48:48

[Erlang之旅 0006] 二进制位串的相关文章

[Erlang之旅 0009] socket 通讯

前面学习完了gen_server .gen_tcp 现在做一个简易的socket通讯,服务端将接收到的信息返回给客户端,具体代码如下: 服务端: 1 -module(tcp_socket3). 2 -behaviour(gen_server). 3 4 -export([start/0, login/2, stop/0]). 5 -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_chan

[Erlang之旅 0005] ETS 和Record

ETS 提供“键-值” 搜索表, 驻留在内存中,速度较快.是缓存的大利器. record 作为erlang的一种数据结构,通常用于函数量传递. ETS中创建表, 对数据进行增.删.改.查 , 及关闭表常用的函数 ets:new(Name, Options) -> tid()   %% 创建表 Options: Type: set | ordered_set | bag | duplicate_bag set: 每一个元组的键值都不能相同:ordered_set:元组键不能相同,并且会进行排序 b

[Erlang之旅 0008] string 常用函数

参考文档:http://www.erlang.org/erldoc?q=string%3Bright&x=-967&y=-384 string类型,经常用到,所有练习一下: 3> string:len("fan"). %% 字符串长度 3 4> string:len("你的"). 2 5> string:len("fan你的中国"). 7 6> string:equal("an",&qu

[Erlang之旅 0004] gen_server

gen_server:start_link(ServerName, Module, Args, Options) -> Result ServerName={local, Name}|{global, GlobalName}|{via, Module, ViaName} Option = {debug, Dbgs}|{timeout, Time}|{spawn ——opt, Sopts} Module: 回调模块的名称 Args: 传给回调模块中init函数的参数 call(ServerRef,

[Erlang之旅 0001] 基本数据类型

数据的基本类型:数值.原子.元组.列表 1 .在Erlang的世界内,一但变量赋值之后,变量不会改变,如果再赋予其它值,就会报错,这和其它大多数语言不同.变量命名通常以大写字母开头,如果有多个单词,则每个单词的首字母大写,如:LastName='YY' 2 . 数值:包含整数和浮点 大部分的算术运算都会自动进行类型转换. 3. 原子 原子是一种仅由字符序列来标识的特殊字符串常量.两个原子只要具有相同的字符表示,就完全相同. 原子的命名: 原子通常以小写字母开头,首字母后可以用大写字母.数字.下划

学习Erlang--1、入门

1.正式起航 从前,一名程序员偶然读到了一本古怪的语言图书,相等其实不是相等,变量其实是不能改变的,语法是那么陌生,它甚至不是面向对象,这些程序实在是太过另类…… 另类的不仅仅是程序,编程的教学步骤也特立独行,它的作者一直喋喋不休地教授并发.分布和容错,不断的唠叨着一种叫COP(Concurrency Oriented Programming,面向并发编程)的方法,管它叫什么…… 不过有些程序看起来很好玩,那天夜里,这个程序员注视着那个聊天程序的小例子,它是多么的小巧可爱而又通俗易懂,它确实简单

数据库操作

1.基本数据类型: (1)数值型. interger        长整数(长度为4B) smallint        短整数(长度为2B) real              浮点数 double precision        双精度浮点数 float(n)        浮点数(精度至少为n位数字) numeric(p, d)            定点数(由p位数字组成,小数点后面有d位数字) (2)字符串型. char(n)        长度为n的定长字符串 varchar(n)

Redis笔记——技术点汇总

目录 · 特点 · 安装 · 数据库 · 服务器命令 · 数据类型及其操作命令 · 数据结构 · string · list · set · hash · zset · 发布与订阅 · 排序 · 事务 · pipeline · 基准测试 · 键的过期 · 持久化 · 概况 · snapshoting · AOF · 主从复制 · HA · Lua · 示例:分布式日志 特点 1. Redis是一个开源的.C语言编写的.面向键值对类型数据的分布式NoSQL数据库系统. 2. 特点:高性能(内存数据

计算机系统概述

计算机系统的组成 一个计算机系统是由软件与硬件组成的,就硬件来说,当我们一般去电脑城配电脑的时候,一般会购买这些基本零部件:主板,CPU,内存,磁盘,机箱,键盘鼠标,显示器.当然还有一些额外的部件,例如独立显卡或者网卡,音箱等.如果除去非必要的部件来看,其实一个计算机系统主要由下面这些重要的部件组成:CPU,存储器(内存),磁盘,IO设备(键鼠,显示器),以及连接这些器件总线,只不过我们的成品电脑是用一块电路板将这些部件连接在了一起.当然随着电脑系统越来越强大,可能除了上述部件之外,还多了很多其