5

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

3
  • What do you mean exactly by convert bytes to int? Commented Apr 27, 2010 at 4:43
  • 'bytes'? What kind of bytes? Data? string? something over the net? xml? huh? Commented Apr 27, 2010 at 4:47
  • 1
    @bbum, the "value" does not come with an "s" in the question title. Commented Apr 27, 2010 at 4:52

5 Answers 5

7

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.

Sign up to request clarification or add additional context in comments.

2 Comments

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.
NSInteger is a typedef, not an objective-C keyword. It's still a plain C question.
5

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;

1 Comment

Awesome that work for me. Thanks heaps, I have been searching ages for how to do this with hex. e.g. Sing8 foo = 0xF4 converting that to an int
4

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.

Comments

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

2 Comments

because you got it backwards? Still not worthy of a downvote given the lack of quality of the question.
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... ;-)
-4

Use the "=" operator.

1 Comment

Can u show me with a small example? i want to knw is there any inbuilt method to convert bytes to int.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.