comment convertir la valeur d’octet en int dans objective-c

S’il vous plaît dites-moi comment convertir des octets en NSInteger / int dans Objective-c dans la programmation pour iPhone?

Qu’entendez-vous par “octets”? Si vous voulez convertir un seul octet représentant une valeur entière en type int (ou NSInteger), utilisez simplement “=”:

Byte b = 123; NSInteger x; x = b; 

as Byte (identique à unsigned char – 1 octet unsigned integer) et NSInteger (identique à int – 4 octets signés entier) sont tous deux de types entiers simples et peuvent être convertis automatiquement. Vous devriez en savoir plus sur les ” types de données c ” et les ” règles de conversion “. par exemple, http://www.exforsys.com/tutorials/c-language/c-programming-language-data-types.html

Si vous souhaitez convertir plusieurs octets stockant une valeur en int, la conversion dépend de la structure de ces données: combien d’octets par valeur, signés ou non.

Si par octet, vous voulez dire une valeur de 8 bits non signée, ce qui suit suffira.

 uint8_t foo = 3; // or unsigned char foo... NSInteger bar = (NSInteger) foo; 

ou même

 NSInteger bar = foo; 
 NSInteger x = 3; unsigned char y = x; int z = x + y; 

Ma conjecture:

 unsigned char data[] = { 0x00, 0x02, 0x45, 0x28 }; NSInteger intData = *((NSInteger *)data); NSLog(@"data:%d", intData); // data:675611136 NSLog(@"data:%08x", intData); // data:28450200 

Alors, méfiez-vous de l’ordre des octets.

Utilisez l’opérateur ” = “.