15

我正在从具有非常大数字的文本文件中加载行。String 具有 toInt 方法,但是如何将字符串转换为能够处理大数字的 Int64?

我没有看到 toInt64 方法或 toLong 等。一定有办法,但我还没有通过搜索找到任何东西。

或者,我想我可以逐位(或按数字组)读取字符串中的数字,然后将它们与适当的 10 因子相加,但这似乎有点矫枉过正。或者也许正确的方法是以二进制形式读取数据并以这种方式转换?

谢谢

4

4 回答 4

34

从 Swift 2.1.1 开始,您可以简单地Int64使用String

let number: Int64? = Int64("42")
于 2016-03-30T13:38:15.117 回答
10

如果你不介意使用 NSString,你可以这样做

let str = "\(LLONG_MAX)"
let strAsNSString = str as NSString
let value = strAsNSString.longLongValue

请注意,与 toInt() 不同,如果字符串不是合法数字,longLongValue 将返回 0,而在这种情况下 toInt() 将返回 nil。

于 2014-11-29T06:32:54.337 回答
4
import Darwin

let strBase10 = "9223372036854775807"
let i64FromBase10 = strtoll(strBase10, nil, 10)

let strBase16 = "0xFFFFFFFFFFFFFFFF"
let i64FromBase16 = strtoll(strBase16, nil, 16)

strtoll 表示 STRingTOLongLong

http://www.freebsd.org/cgi/man.cgi?query=strtoll

于 2015-04-08T04:28:36.627 回答
1
import Darwin
let str = ...
let i = strtoll(str, nil, 10)
于 2014-11-29T20:37:47.700 回答