views:

762

answers:

5

Hello,

Please tell me how to convert bytes to NSInteger/int in objective-c in iPhone programming?

A: 

Use the "=" operator.

NSResponder
Can u show me with a small example? i want to knw is there any inbuilt method to convert bytes to int.
suse
A: 
NSInteger x = 3;
unsigned char y = x;
int z = x + y;
ohho
the gentleman who -1 my answer please explain why...
ohho
because you got it backwards? Still not worthy of a downvote given the lack of quality of the question.
bbum
y is a byte. z is an integer. the question is "how to convert byte value into int in objective-c"... never mind. I'll get used to this... ;-)
ohho
A: 

If by byte, you mean an unsigned 8 bit value, the following will do.

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

or even

NSInteger bar = foo;
JeremyP
+1  A: 

Your question is not related with Objective-C, it is just pure c, and it should be tagged "c".

What do you mean by "Bytes"? If you want convert single byte representing integer value to int (or NSInteger) type, just use "=":

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

as Byte (the same as unsigned char - 1 byte unsigned integer) and NSInteger (the same as int - 4 bytes signed integer) are both of simple integer types and can be converted automatically. Your should read more about "c data types" and "conversion rules". for example http://www.exforsys.com/tutorials/c-language/c-programming-language-data-types.html

If you want to convert several bytes storing some value to int, then convertion depends on structure of these data: how many bytes per value, signed or unsigned.

Vladimir
this _is_ an objective-c question. NSInteger is defined in NSObjCRuntime.h and the first #import in NSObjCRuntime.h is <objc/objc.h>, so I consider the objective-c tag is ok. (Just my guess), the rationale behind this question is: someone new to objective-c may not see the difference between a NSInteger and a NSNumber at first sight.
ohho
NSInteger is a typedef, not an objective-C keyword. It's still a plain C question.
NSResponder
A: 

My guess:

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

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

So, beware of byte-order.

iwat