Erlang:使用#表示法从基数2转换回十进制出错

时间:2018-02-09 23:11:43

标签: erlang

要获得基数B中数字N的十进制等值,我可以B#N,因此16#F输出152#1111也输出15。

要将数字(比如15)从十进制转换为二进制,我可以integer_to_list(15,2)输出"1111",可以通过执行list_to_integer将其作为数字。因此,list_to_integer(integer_to_list(15,2)) + 1.完全有效并输出1112

我检查is_integeris_number是否true检查了list_to_integer(integer_to_list(15,2)),我还能够转换回list_to_integer(integer_to_list(15,2), 2)并返回{{ 1}}。

但是当我尝试15时,为什么它会给我一个错误2#list_to_integer(integer_to_list(15,2))而不是*1: illegal integer

1 个答案:

答案 0 :(得分:1)

同样的事情:

2> Name = "Yogesch".
"Yogesch"

3> "Name".
"Name"
4> 

8> "list_to_integer(integer_to_list(10))".
"list_to_integer(integer_to_list(10))"

每种计算机编程语言都有语法规则。语法2#10101用于整数文字。值得注意的是,2#不是函数的名称,因此您无法写2#("1010"),也不会:

10> X = "1010".
"1010"

11> 2#(X).
* 1: illegal integer

2#a space是整数文字的分隔符,就像引号是字符串的分隔符(然后将其解释为整数列表)。