我正在从具有非常大数字的文本文件中加载行。String 具有 toInt 方法,但是如何将字符串转换为能够处理大数字的 Int64?
我没有看到 toInt64 方法或 toLong 等。一定有办法,但我还没有通过搜索找到任何东西。
或者,我想我可以逐位(或按数字组)读取字符串中的数字,然后将它们与适当的 10 因子相加,但这似乎有点矫枉过正。或者也许正确的方法是以二进制形式读取数据并以这种方式转换?
谢谢
我正在从具有非常大数字的文本文件中加载行。String 具有 toInt 方法,但是如何将字符串转换为能够处理大数字的 Int64?
我没有看到 toInt64 方法或 toLong 等。一定有办法,但我还没有通过搜索找到任何东西。
或者,我想我可以逐位(或按数字组)读取字符串中的数字,然后将它们与适当的 10 因子相加,但这似乎有点矫枉过正。或者也许正确的方法是以二进制形式读取数据并以这种方式转换?
谢谢
从 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)