使用 Elixir 打印十六进制整数

Printing integer in hexadecimal with Elixir

我可以在 Erlang 中做到这一点:

io:fwrite("~.16X~n", [-31,"0x"]).
-0x1F
ok

但不在 Elixir 中:

:io.fwrite("~.16X~n", [-31,"0x"]) ** (ArgumentError) argument error (stdlib) :io.format(#PID<0.54.0>, "~.16X~n", [-31, "0x"])

为什么不呢?

添加@Dogbert 的评论作为答案:

尝试使用单引号:

:io.fwrite('~.16X~n', [-31, '0x'])

一句话补充说明:Elixir中的单引号表示字符列表(详见here)。 Erlang fwrite 函数需要一个字符列表而不是 Elixir 二进制文件,因此双引号不起作用而单引号起作用。

为什么不使用 Integer.to_string/2

iex(1)> Integer.to_string(-31, 16)
"-1F"