zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    MLE
    AHOI/HNOI2018道路
    AHOI/HNOI2018排列
    推式子
    AHOI/HNOI2018游戏
    ! BJOI2018治疗之雨
    BJOI2018链上二次求和
    BJOI2018双人猜数游戏
    ! BJOI2018染色
    BJOI2018二进制
  • 原文地址:https://www.cnblogs.com/or2-/p/7406647.html
Copyright © 2011-2022 走看看