• elixir二进制模式匹配


    for << << b1::size(2), b2::size(3), b3::size(3) >> <- "hello" >>,
    ...> do: "0#{b1}#{b2}#{b3}"
    ["0150", "0145", "0154", "0154", "0157"]

     

    1)    h ascii码的10进制对应值是 104 

       2 )    104 转换成 二进制 01101000

       3 )  按照这个模式   b1::size(2), b2::size(3), b3::size(3)         b1 占2位 01转换成十进制为1,  b2占3位 101 转换成十进制为5, b3占3位 000 转换成十进制为0

      4)   所以 按照  "0#{b1}#{b2}#{b3}" 方式返回  "0150" , 就是["0150"]

    例子2 

    bin = <<3 :: size(2), 5 :: size(4), 1 :: size(2)>>
    <<213>>

    3的二进制是 11 , size(2)表示2个比特位, 所以11保留

    5的二进制位是101 ,size(4)表示占4个比特位 ,所以还不够用0补位,最后是 0101

    1的二进制位是01  size(2)表示占2个比特位, 所以用还是01

    最后合起来二进制是 11010101 ,十进制是213

  • 相关阅读:
    Maven的生命周期
    Maven坐标
    IDEA配置maven
    IDEA配置tomcat
    重写父类方法
    类的继承
    内部类
    static关键字
    线程相关知识
    数组
  • 原文地址:https://www.cnblogs.com/or2-/p/7406647.html
Copyright © 2020-2023  润新知