我正在从具有非常大数字的文本文件中加载行。
String
有 toInt
方法,但是如何将字符串转换为能够处理大数字的 Int64
?
我没有看到
toInt64
方法或toLong
等。一定有办法,但我还没有通过搜索找到任何东西。
或者,我想我可以逐位(或按数字组)读取字符串中的数字,然后将它们与适当的十因数相加,但这似乎有点矫枉过正。或者也许正确的方法是以二进制形式读取数据并以这种方式进行转换?
谢谢
从 Swift 2.1.1 开始,您可以简单地使用
Int64
初始化
String
let number: Int64? = Int64("42")
如果你不介意使用
NSString
,你可以这样做:
let str = "\(LLONG_MAX)"
let strAsNSString = str as NSString
let value = strAsNSString.longLongValue
请注意,与
toInt()
不同,如果字符串不是合法数字,longLongValue
将返回 0
,而在这种情况下 toInt()
将返回 nil
。
import Darwin
let strBase10 = "9223372036854775807"
let i64FromBase10 = strtoll(strBase10, nil, 10)
let strBase16 = "0xFFFFFFFFFFFFFFFF"
let i64FromBase16 = strtoll(strBase16, nil, 16)
strtoll 表示 STRingTOLongLong
import Darwin
let str = ...
let i = strtoll(str, nil, 10)