web-dev-qa-db-ja.com

Swiftでは、文字列をInt64にどのように変換しますか?

非常に大きな数のテキストファイルから行を読み込んでいます。文字列にはtoIntメソッドがありますが、文字列を、大きな数を処理できるInt64にどのように変換しますか?

ToInt64メソッドやtoLongなどが表示されません。方法があるはずですが、まだ検索しても何も見つかりません。

あるいは、文字列内の数字を数字ごと(または数字のグループごと)に読み取って、適切な10の係数でそれらを加算することもできますが、それはやり過ぎのようです。あるいは、適切な方法は、データをバイナリ形式で読み取り、そのように変換することですか?

ありがとう

12
shim

Swift 2.1.1以降、単純にInt64 with String

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

NSStringを使用してもかまわない場合は、これを行うことができます

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

ToInt()とは異なり、文字列が有効な数値でない場合、longLongValueは0を返しますが、その場合、toInt()はnilを返します。

10
Mobile Ben
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

3
Hal
import Darwin
let str = ...
let i = strtoll(str, nil, 10)
1
newacct