【Erlang】二十、定义二进制型的数据结构

本文介绍如何通过位操作来定义二进制数据结构,以实现数据的紧凑存储。通过实例展示了不同方式下颜色RGB值的表示方法及其占用的空间大小对比,突出了位操作在减少数据存储空间方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


目的是让数据变得更紧凑,更小。在网络通信中,数据越小,传输的速度越快

定义二进制型中数据的结构

假设我们想用描述一个16位颜色 RGB(2, 61, 20)

  • 使用元组描述这个颜色,然后转成二进制型数据
    1> Color1 = term_to_binary({2, 61, 20}).
    <<131,104,3,97,2,97,61,97,20>>
    2> byte_size(Color1 ).
    9
    
  • 直接使用二进制型描述这个颜色,可以看出来,数据比使用元组变的小了很多
    1> Color2 = <<2,61,20>>.
    <<2,61,20>>
    2> byte_size(Color2).
    3
    
  • 定义二进制型数据的结构。假设我们决定给红色通道分配5位,绿色通道分配6位,剩下5位分配给蓝色(让绿色通道多使用以为是因为人眼对绿光更敏感),这样数据变得更小了
    1> Red = 2.
    2> Green = 61.
    3> Blue = 20.
    4> Color3 = <<Red:5, Green:6, Blue:5>>.
    <<23, 180>>
    5> byte_size(Color3).
    2
    %% 提取字节型的数据
    6> <<R:5, G:6, B:5>> = Color3.
    7> R.
    2
    8> G.
    61
    9> B.
    20
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值