将大十进制数转换为十六进制表示法

时间:2017-09-08 10:18:07

标签: string swift3 integer hex decimal

在Swift中创建String对象时,可以使用String Format Specifier将整数转换为十六进制表示法。

print(String(format:"%x", 1234))
// output: 4d2
// expected output: 4d2

但是当数字变大时,输出就不如预期了。

print(String(format:"%x", 12345678901234))
// output: 73ce2ff2
// expected output: b3a73ce2ff2

似乎String(format:"%x", n)的输出被截断为8个字符。我本想地用十六进制思考,这使调试变得困难。我已经看到了其他编程语言的答案,其中解释说你需要将大整数分成几部分,但这对我来说似乎不对。

  • 我在这里做错了什么?
  • 在Swift中将十进制数转换为十六进制数的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您需要使用%lx%llx

print(String(format:"%lx", 12345678901234))
  

b3a73ce2ff2

您链接的网站上的表2指定了它们

  

l -   Length修饰符,指定后续的d,o,u,x或X转换说明符适用于long或unsigned long参数。

x用于无符号32位整数,最多只能达到4.294.967.296