Reputation: 4255
I have a NSData object with 4 bytes length. I know this 4 bytes construcuts a positive integer. How should I get the int from those NSdata object?
Upvotes: 3
Views: 7600
Reputation: 4255
I have found the solution here.
char buffer[4];
[data getBytes:buffer length:4];
int dataSize = 0;
char cBuf2[4];
for(int k=0;k < 4; ++k) {
cBuf2[k] = buffer[3-k];
}
memcpy(&dataSize, cBuf2, 4);
NSLog(@"Zip stream size :%d", dataSize);
Upvotes: 1
Reputation: 285077
int32_t value; // make unsigned if needed.
[myData getBytes: &value];
Upvotes: 3
Reputation: 53689
If you know the endianness matches the current system:
x = *(const UInt32 *)[theData bytes];
If you know the endianness is backwards, follow that with:
x = Endian32_Swap( x );
If you are not sure of the source and target endianness, you should probably find another way to pass the data.
Upvotes: 12