Bri*_*ian 3 iphone bit-manipulation objective-c endianness ios
iOS的objective-c库中是否有内置的实用程序或宏,允许您在endianess方面将字节转换为整数?
请不要告诉我使用位移操作.我试图避免编写自定义代码来执行此操作,如果它已经存在.
我希望代码将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)];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3703 次 |
| 最近记录: |