iOS的objective-c库中是否有任何内置的实用程序或宏可以让您根据字节顺序在字节与整数之间进行转换?
请不要告诉我使用位移操作。如果自定义代码已经存在,我会尽量避免编写自定义代码来执行此操作。
我想要将 NSData* 转换为原始类型(int、uint、short 等)并将原始类型转换回 NSData* 的代码。
最佳答案
您可以通过访问 NSData
属性从 bytes
获取字节。然后只需将其转换为指向您想要的任何类型的指针。显然,您需要确保知道 NSData
中内容的字节序和大小。
例如
#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)];
关于iphone - Objective-C 中的位转换工具,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8552864/