Qual è il modo più semplice per analizzare i file binari in Cocoa Touch?
-
03-07-2019 - |
Domanda
Supponiamo di avere un file binario (generato con Java) contenente un valore int a 32 bit. Attualmente sto usando il seguente codice Objective-C per analizzarlo:
NSString *path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"dat"];
NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath:path];
unsigned long intValue;
memcpy(&intValue, [[file readDataOfLength:4] bytes], 4);
intValue = NSSwapBigLongToHost(intValue);
[file closeFile];
La mia prima domanda è chiedermi se è il modo comune di fare cose su iPhone perché non ho trovato nulla vicino a DataInputStream di Java.
La mia seconda domanda è relativa alla riga di codice con un memcpy. Non capisco perché la parte seguente (più elegante, meno "di basso livello") non funziona invece:
[[file readDataOfLength:4] getbytes:&intValue];
Ricevo un avviso sulla build:
'NSData' may not respond to '-getbytes:'
Al momento dell'esecuzione, sto ottenendo:
'NSInvalidArgumentException', reason: '*** -[NSConcreteData getbytes:]: unrecognized selector sent to instance
Soluzione
Per l'ultima domanda, usa getBytes (maiuscola B).
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow