iOS的objective-c库中是否有内置的实用程序或宏,允许您在字节数方面转换字节和从整数转换字节?
请不要告诉我使用位移操作。我试图避免编写自定义代码来执行此操作,如果它已经存在。
我希望代码将NSData *转换为原始类型(int,uint,short等)并将原始类型转换回NSData *。
答案 0 :(得分:9)
您可以通过访问NSData
属性从bytes
获取字节。然后将其转换为指向您想要的任何类型的指针。显然,您需要确保知道NSData
中的字节顺序和大小。
e.g。
#include <CFByteOrder.h>
// Bytes to uint32_t
NSData *data = <THE_DATA>;
void *bytes = [data bytes];
uint32_t *intBytes = (NSInteger*)bytes;
uint32_t swapped = CFSwapInt32BigToHost(*intBytes); ///< If the data in `data' is big endian
// uint32_t to bytes
uint32_t someInt = 1234;
uint32_t swappedInt = CFSwapInt32HostToBig(someInt); ///< If we want to store in big endian
NSData *data = [NSData dataWithBytes:&swappedInt length:sizeof(swappedInt)];
答案 1 :(得分:4)
我想你想要CFSwapInt32 *系列函数。
请参阅Apple's docs。