2016-06-14 373 views
2

如何将十六进制转换为十进制的swift?将十六进制转换为十进制在swift中

我有字符串 “423fdf4dfb1115”,我需要得到这个=> 18647576781459733.

我试试这个:

let result = UInt8(strtoul("423fdf4dfb1115", nil, 16)) 

但应用程序崩溃...

我使用这个在线转换: http://www.binaryhexconverter.com/hex-to-decimal-converter

+0

您通过串 –

+2

你为什么铸造结果的UINT8需要循环?你有一个非常大的数字,它不可能适合一个小UInt8。 – Gruntcakes

+0

您提供的HEX号码(423fdf4dfb1115)为18,596,864,257,291,000。 我在excel(单元格x 16^0)中证明了这一点,并为每个数字增加一个额外值并对每个数字求和。 – Stevan

回答

1

令结果= UINT64(strtoul将( “423fdf4dfb1115”,零,16))

8

结果必须是UInt64UInt8.max是255)。

有一个方便的初始化程序,strtoul是不需要的。

let string = "423fdf4dfb1115" 
let result = UInt64(string, radix:16) 
+0

谢谢!这工作! – Vykintas

+0

酷招。我不知道这个初始化器。它会采取任何有效的基数? (基数37,即使如果由于某种奇怪的原因,你想要吗?)是否有一个相应的方法,输出一个整数类的值作为给定基数的字符串? –

+0

@DuncanC我这么认为。是的,'String'具有相似的初始值设定项,例如'print(String(999_999,radix:16))//“f423f”'。甚至有一个可选的'大写'参数来获得'F423F'。 – vadian

0

你需要得到诠释,从而更好地使用Int(),应该说这是十六进制radix: 16像下面。

斯威夫特3

let result = "423fdf4dfb1115" 
let intResult = Int(result , radix: 16) 
print(intResult) 
相关问题