如何将 Int32 转换为带有前导 0x 的字符串(基数 16)?

How to you convert an Int32 into a string (base 16) with a leading 0x?

在 shell 上,我将数字(例如 29360134)转换并格式化为字符串“0x1c00006”:

printf "%#08x" 29360134 # -> 0x1c00006

但是,在 Crystal 中,我使用相同的格式字符串得到了不同的结果:

puts("%#08x" % 29360134).inspect # -> 01c00006

将 Int32 转换为具有前导 0x 的字符串的正确方法是什么?

Crystal 当前未实现 # 标志。您必须像这样自己添加前缀:

puts "0x%08x" % 29360134

您可以在 https://github.com/crystal-lang/crystal/blob/1cd278d346b16b9ab42a62a4746086c58a8da2f9/src/string/formatter.cr#L222

查看当前实施

请注意 flags.sharp.

没有代码路径