2010-04-27 6 views
3

S'il vous plaît dites-moi comment convertir des octets à NSInteger/int dans l'objectif-c dans la programmation iPhone?comment convertir la valeur d'octet en int dans l'objectif-c

+0

Que voulez-vous dire exactement par convertir des octets en int? –

+0

'octets'? Quel genre d'octets? Les données? chaîne? quelque chose sur le net? xml? Hein? – bbum

+1

@bbum, la "valeur" ne vient pas avec un "s" dans le titre de la question. – ohho

Répondre

5

Que voulez-vous dire par "Octets"? Si vous voulez convertir un seul octet représentant la valeur entière à int (ou NSInteger), utilisez juste « = »:

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

comme octet (le même que celui unsigned char-1 octet entier non signé) et NSInteger (Identique à int - entier signé de 4 octets) sont tous les deux des types entiers simples et peuvent être convertis automatiquement. Vous devriez en savoir plus sur "c types de données" et "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 en stockant une valeur int, la conversion dépend de la structure de ces données: nombre d'octets par valeur, signés ou non.

+2

cette _is_ est une question objective-c. NSInteger est défini dans NSObjCRuntime.h et le premier #import dans NSObjCRuntime.h est , donc je considère que la balise objective-c est correcte. (À mon avis), la raison d'être de cette question est la suivante: quelqu'un de nouveau à l'objectif-c peut ne pas voir la différence entre un NSInteger et un NSNumber à première vue. – ohho

+1

NSInteger est un typedef, pas un mot-clé objectif-C. C'est toujours une question simple. – NSResponder

-4

Utilisez l'opérateur "=".

+0

Pouvez-vous me montrer avec un petit exemple? Je veux savoir s'il existe une méthode intégrée pour convertir des octets en int. – suse

1
NSInteger x = 3; 
unsigned char y = x; 
int z = x + y; 
+1

le monsieur qui -1 ma réponse s'il vous plaît expliquer pourquoi ... – ohho

+0

parce que vous l'avez en arrière? Toujours pas digne d'une downvote étant donné le manque de qualité de la question. – bbum

+1

y est un octet. z est un nombre entier. la question est "comment convertir la valeur des octets en int en objectif-c" ... peu importe. Je vais m'y habituer ... ;-) – ohho

4

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

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

ou même

NSInteger bar = foo; 
+0

Génial ça marche pour moi. Merci tas, j'ai cherché des âges pour faire cela avec hex. par exemple. Sing8 foo = 0xF4 convertissant cela à un int –

1

Je pense:

unsigned char data[] = { 0x00, 0x02, 0x45, 0x28 }; 
NSInteger intData = *((NSInteger *)data); 

NSLog(@"data:%d", intData); // data:675611136 
NSLog(@"data:%08x", intData); // data:28450200 

Donc, méfiez-vous de l'ordre des octets.