Erlang中位字符串到十进制的转换

Erlang中位字符串到十进制的转换,erlang,bitstring,Erlang,Bitstring,我正在尝试将位字符串解码为十进制值。对于e.x,我有这样的位字符串 。我想把它们转换成十进制值,比如你把四位作为一个数字(96(01100000)-> 60(第一个四位是6,下一个四位是0),64个-> 40个等等。输出将是604070999。最后9:4表示你考虑4位来表示。< /P> 任何人都可以帮助执行此函数erlang。如果您使用的是二进制而不是位字符串(即,没有尾随的9:4部分),则可以对二进制理解中的每个字节应用十六进制转换,然后将生成的二进制转换为整数: 1> Bin = &l

我正在尝试将位字符串解码为十进制值。对于e.x,我有这样的位字符串

。我想把它们转换成十进制值,比如你把四位作为一个数字(96(01100000)-> 60(第一个四位是6,下一个四位是0),64个-> 40个等等。输出将是604070999。最后9:4表示你考虑4位来表示。< /P>
任何人都可以帮助执行此函数erlang。

如果您使用的是二进制而不是位字符串(即,没有尾随的
9:4
部分),则可以对二进制理解中的每个字节应用十六进制转换,然后将生成的二进制转换为整数:

1> Bin = <<96,64,112,153>>.
<<96,64,112,153>>
2> binary_to_integer(<< <<(integer_to_binary(B,16))/binary>> || <<B:8>> <= Bin >>).
60407099

如果您正在执行
binary\u to\u integer/1
则没有理由使用
integer\u to\u binary(B,16)
binary\u to\u integer()
就足够了。@Hynek Pichi Vychodil true;我第一次尝试处理二进制而不是位字符串,因此使用了
而不是
,在这种情况下需要
整数到二进制/2
。如果你愿意,我会很高兴地编辑和扩展答案。@SteveVinoski:我很荣幸;-)
3> Bits = <<96,64,112,153,9:4>>.
<<96,64,112,153,9:4>>
4> binary_to_integer(<< <<(integer_to_binary(B,16))/binary>> || <<B:4>> <= Bits >>).
604070999
5> binary_to_integer(<< <<($0+B)>> || <<B:4>> <= Bits >>).
604070999