如何在 Swift 中将 50 位字符串转换为适当的整数类型?

How do I convert a 50 digit string into the appropriate integer type in Swift?

我需要将这个 50 位数字字符串 53503534226472524250874054075591789781264330331690 转换为适当的数字类型。我试过这个:

let str = "53503534226472524250874054075591789781264330331690"
let num = str.toInt();         // Returns nil
let num = Int64(str.toInt());  // Errors out

Int64 签名时的最大大小为 9,223,372,036,854,775,807。所以你不能像那样转换它。

您需要类似于其他语言中的 BigInt class 的东西。检查这个其他问题,他们在 Swift:

中回答了关于 BigInt 的替代方案
  • BigInteger equivalent in Swift?

总而言之,存在用于任意长整数的第三方库。 Apple 的唯一选择是 NSDecimalNumber,但它的限制是 38 位,而你的号码有 50。