使用 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"
我可以在 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"