Quel est le moyen le plus simple d’analyser des fichiers binaires dans Cocoa Touch?

StackOverflow https://stackoverflow.com/questions/402555

  •  03-07-2019
  •  | 
  •  

Question

Disons que j'ai un fichier binaire (généré avec Java) contenant une valeur int de 32 bits. J'utilise actuellement le code Objective-C suivant pour son analyse:

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];

Ma première question est de demander si c'est la façon habituelle de faire les choses sur l'iPhone parce que je n'ai rien trouvé de proche de DataInputStream de Java.

Ma deuxième question concerne la ligne de code avec un memcpy. Je ne comprends pas pourquoi la partie suivante (plus élégante, moins "de bas niveau") ne fonctionne pas:

[[file readDataOfLength:4] getbytes:&intValue];

Je reçois un avertissement sur la construction:

'NSData' may not respond to '-getbytes:'

Lors de l'exécution, j'obtiens:

'NSInvalidArgumentException', reason: '*** -[NSConcreteData getbytes:]: unrecognized selector sent to instance
Était-ce utile?

La solution

Pour la dernière question, utilisez getBytes (majuscule B).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top