You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Elixir中将二进制字符串转换为bitstring?

二进制字符串转Bitstring的实现方法

在Elixir里,要把类似 "0110" 这样的二进制字符串转换成对应值的bitstring,直接用Base模块不行(它仅处理RFC4648定义的编码类型,不支持Base2这类转换),可以用以下两种简洁方式实现:

方法一:逐字符转换后打包

先把字符串拆成单个字符,转成整数列表,再通过位语法打包成对应长度的bitstring:

def bin_str_to_bitstring(bin_str) do
  bin_str
  |> String.graphemes()
  |> Enum.map(&String.to_integer/1)
  |> then(&<<&1::bitstring-size(Enum.count(&1))>>)
end

# 调用示例
bin_str_to_bitstring("0110") # 返回 <<6::size(4)>>

方法二:先转整数再指定位数

先把二进制字符串转成十进制整数,再通过位语法指定和原字符串长度一致的位数,避免前导零丢失:

def bin_str_to_bitstring(bin_str) do
  length = String.length(bin_str)
  bin_str |> String.to_integer(2) |> then(&<<&1::size(length)>>)
end

# 调用示例
bin_str_to_bitstring("0110") # 返回 <<6::size(4)>>

注意:如果直接用 <<String.to_integer("0110", 2)::bits>>,会得到 <<6::size(3)>>(因为6的二进制是110,仅3位),所以必须显式指定size参数匹配原字符串的位数,才能保留前导零对应的位。

内容的提问来源于stack exchange,提问作者Adam Millerchip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 16:34:56