在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个字符。我本想地用十六进制思考,这使调试变得困难。我已经看到了其他编程语言的答案,其中解释说你需要将大整数分成几部分,但这对我来说似乎不对。
答案 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