Erlang笔记 -- 二进制与位语法

本文介绍了Erlang中的二进制数据结构,包括二进制型与位串的概念,以及如何使用内置函数和位语法进行操作。重点讲述了如何构建、拆分二进制,以及通过位推导进行位操作。文中还提供了实例,如反转二进制字节顺序和位顺序,帮助理解Erlang中二进制的处理方式。
摘要由CSDN通过智能技术生成

二进制型(binary)是一种数据结构,当二进制型里的位数都会是8的整数倍时,对应一个字节串。当位数不是8的整数倍,则称这段数据为位串(bitstring)。
二进制型的编写和打印形式是双小于号与双大于号之间的一列整数或字符串:

1> <<19,88,20>>.
<<19,88,20>>
2> <<"hello">>.
<<"hello">>
3> <<49,50,51>>.
<<"123">>
4> <<99,97,116>>.
<<"cat">>

在二进制型里使用整数时,它们必须属于0255这个范围。
二进制型<<"cat">><<99,97,116>>的简写形式,这个二进制型是由字符串里这些字符的ASCII编码组成的。
和字符串类似,如果某个二进制型的内容是可打印的字符串,shell就会将这个二进制型打印成字符串,否则就打印成一列整数。
可以用内置函数和位语法来构建二进制型或提取它里面的元素。

1. 内置函数
  • list_to_binary(L) -> B

list_to_binary返回一个二进制型,它是通过把io列表(iolist)L里的所有元素压扁后形成的(压扁的意思是移除列表里所有的括号)。io列表本身是循环定义的,它是指一个列表所包含的元素是0…255的整数、二进制型或者其他io列表。

5> list_to_binary([999,123]). %% 999超出范围0~255
** exception error: bad argument
     in function  list_to_binary/1
        called as list_to_binary([999,123])
6> list_to_binary([<<"abc">>, 123, <<1,2,3>>]).
<<97,98,99,123,1,2,3>>
  • split_binary(Bin, Pos) -> {Bin1, Bin2}
    这个函数在Pos处把二进制型Bin一分为二。
7> split_binary(<<1,2,3,4,5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值