在 Swift 中,如何将 String 转换为 Int64?

问题描述 投票:0回答:4

我正在从具有非常大数字的文本文件中加载行。

String
toInt
方法,但是如何将字符串转换为能够处理大数字的
Int64

我没有看到

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

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

谢谢

swift string long-integer int64
4个回答
47
投票

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

Int64
 初始化 
String

let number: Int64? = Int64("42")

10
投票

如果你不介意使用

NSString
,你可以这样做:

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

请注意,与

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


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


1
投票
import Darwin
let str = ...
let i = strtoll(str, nil, 10)
© www.soinside.com 2019 - 2024. All rights reserved.