Formatting Erlang:如何将十进制数转换为充满零的十六进制字符串

Formatting Erlang:如何将十进制数转换为充满零的十六进制字符串,formatting,io,erlang,Formatting,Io,Erlang,我想在Erlang中将42(基数10)转换为000002A(基数16) 我在网上找到了一些提示: io:format("~8..0B~n", [42]) -> 00000042 及 但我似乎无法同时找到这两种方法,我尝试过: io:format("~8..0.16B~n", [42]) 这似乎是合乎逻辑的,但事实并非如此,这给了我一个错误 谢谢 io:格式(“~8.16.0B~n”,[42])。 0000002A 基本上,它是~F.p.Pad,其中: F=字段宽度 P=预压缩 Pad

我想在Erlang中将42(基数10)转换为000002A(基数16)

我在网上找到了一些提示:

io:format("~8..0B~n", [42]) -> 00000042

但我似乎无法同时找到这两种方法,我尝试过:

io:format("~8..0.16B~n", [42])
这似乎是合乎逻辑的,但事实并非如此,这给了我一个错误

谢谢

io:格式(“~8.16.0B~n”,[42])。
0000002A

基本上,它是~F.p.Pad,其中:

  • F=字段宽度
  • P=预压缩
  • Pad=填充字符

请参见

老实说,该文档非常吸引人。在过去一年半的时间里,我读了又读,关于打印数字基数的“精度”参数的用法完全不清楚。看看您的示例与文档中的示例有多么微妙的不同:“~.16B”给出了正常的十六进制打印[现在Pad字符==打印数字的基数],在您的版本中是“16.0B”,其中“P”(精度)字段成为数字的基数,Pad字符(本例中为“0”)成为填充。或者我不明白。现在是2018年,同样可怕的文件也存在。在任何地方都没有任何迹象表明精度字段现在必须携带底座才能使用字段宽度。我认为这只是一种记法技巧,因为做伪逻辑的事情与文档中的~F.P.PadModC不匹配。我认为,只要对文档进行简单的扩展以涵盖这个案例,多年来就可以为人们节省10万个小时。毕竟,我们都需要使用不同的基地与一个填充领域的宽度有时。
io:format("~8..0.16B~n", [42])