15

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

toInt64メソッドやtoLong等が見当たりません。何か方法があるに違いないのですが、検索しても何も見つかりませんでした。

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

ありがとう

4

4 に答える 4

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 に答える