看似微不足道的事情却给我带来了很多问题。我正在尝试将大整数从字符串转换为 Int 类型。基本上我有一个 64 位哈希值,它在某一时刻作为字符串传递,我需要将其转换回 Int。
根据我能找到的所有文档,在 Swift 中,Int 类型是 64 位。调用 Int(str) 应该可以很好地处理 64 位转换。但它似乎试图将其转换为 32 位整数,因此我收到一个 nil 值。由于各种原因,我无法使用 Int64()(长话短说,我的哈希表中的键必须是 Int 类型而不是 Int64)。
代码如下:
在类(class)开始时声明:
var nameTable: Dictionary<Int, String> = [:]
稍后在某个函数中声明:
let kv = data[i].componentsSeparatedByString(":")
self.nameTable[Int(kv[0])!] = kv[1]
其中 kv[0]="3928953869951869841"
和 kv[1]="a"
部分 Int(kv([0])!
失败,因为意外返回了 nil 值。
Int.max
返回值 2147483647,即 32 位最大 int,考虑到所有文档都将 int 声明为 64 位值,这让我觉得很奇怪。代码已在 iPhone 5 - 6s 上运行,结果相同。
任何帮助将不胜感激。谢谢!
最佳答案
Int("string") - 是可选类型 如果你想排除 nil 异常,请尝试以下代码:
let stingNumber = "3928953869951869841"
if let index = Int64("\(stingNumber)") {
self.nameTable[index] = "a"
NSLog("\(self.nameTable)")
NSLog("\(Int64.max)")
}
我在 iPhone 4s 上模拟了这个,我有日志:
2016-08-10 15:22:24.199 stackoverlow-38866748[52907:1401199] [3928953869951869841: "a"]
2016-08-10 15:22:24.202 stackoverlow-38866748[52907:1401199] 9223372036854775807
关于swift - 从 String 转换大 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38866748/