3
NSData * data;
NSFileHandle * file;

file = [NSFileHandle fileHandleForReadingAtPath: @"script.txt"]; //this is wrong, as I have to provide a full pathname, but disregard for now

[file seekToFileOffset: i]; //i not mentioned here, as this is only a snippet of code. Suffice to know that in the file it falls at the beginning of an integer I want to read

data = [file readDataOfLength: 5]; //5-digit integer that I want to read

では、(つまり、算術演算を実行するために)使用できるintとしてデータをキャストするにはどうすればよいですか?

4

5 に答える 5

5

テキスト ファイルから整数を読み取っているので、次のように変換できます。

char buf[6];
[data getBytes:buf length:5];
buf[5] = '\0';
NSInteger res = atoi(buf);

これは、1 文字あたり 1 バイトを使用するエンコーディングを想定しています。これは、[file readDataOfLength: 5]提供したコード スニペットの の呼び出しと一致しています。

桁数が事前にわからない場合は、次のようにすることができます。

char buf[11]; // Max 10 digits in a 32-bit number + 1 for null terminator
bzero(buf, 11);
[data getBytes:buf length:variableLength];
NSInteger res = atoi(buf);
于 2012-12-19T16:23:13.797 に答える
2

もう少し一般的には、これを通貨や科学表記法などに使用したり、ここでコード化されている int や浮動小数点に使用したりできます...

NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSNumberFormatter * format = [[NSNumberFormatter alloc] init];
[format setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * myNumber = [format numberFromString:string];
于 2012-12-19T16:27:11.003 に答える
2

これを行う方法は、データを NSString に変換し、そこから整数値を取得することです。

// assuming UTF-8 encoding
NSString *temp = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
int val = [temp intValue];

参照用ドキュメント: NSString

于 2012-12-19T16:25:44.763 に答える
0

NSData *dData ;

const char* fData =[dData バイト];

于 2013-12-13T11:44:26.967 に答える
0

これを行う場合、 script.txt にプレーンテキストが含まれていると仮定すると、NSScannerを使用します。

NSError *error = nil;
NSString *fileString = [NSString stringWithContentsOfFile:scriptPath encoding:NSUTF8StringEncoding error:&error];
if (!fileString) { // Handle error }
NSScanner *scanner = [NSScanner scannerWithString:fileString];
[scanner setScanLocation:i];
int value = 0;
if (![scanner scanInt:&value]) { // Unable to scan integer from string }

// value should contain your integer here
于 2012-12-19T16:29:29.877 に答える