当尝试使用将十六进制转换为字符串时,我看到参数错误List.to_integer
iex(1)> List.to_integer("C5",16)
** (ArgumentError) argument error
:erlang.list_to_integer("C5", 16)
Run Code Online (Sandbox Code Playgroud)
在 erlang 中同样有效
3> list_to_integer("C5", 16).
197
Run Code Online (Sandbox Code Playgroud)
报价很重要。
\n\n\n\nList.to_integer(\'C5\', 16)\n#\xe2\x87\x92 197\nRun Code Online (Sandbox Code Playgroud)\n\n在 Elixir 中charlist应该放入单引号。双引号是为二进制文件保留的。
如果您想将二进制转换为整数,一种选择是执行charlist:
"C5" |> to_charlist() |> List.to_integer(16)\n#\xe2\x87\x92\xc2\xa0197\nRun Code Online (Sandbox Code Playgroud)\n\n另一种选择是Integer.parse/2:
with {result, _} <- Integer.parse("C5", 16), do: result\n#\xe2\x87\x92\xc2\xa0197\nRun Code Online (Sandbox Code Playgroud)\n