我试图找出改变我的NSData对象的字节顺序的最佳方法。
这是我创建它的方式
NSData *pillowData = [manufData subdataWithRange:NSMakeRange(5, 4)];
这是pillowData的输出
41543138
这就是我想要在转换后使用pillowData。
38315441
基本上转换为小端。
答案 0 :(得分:4)
NSData没有字节序的概念,它是一个简单的字节序列。如果您需要对这些字节强加一定的顺序,那么您必须为此推出自己的代码。
那就是说,Core Foundation有一堆辅助方法,例如。 CFSwapInt32()
以及许多其他人,都在CFByteOrder.h
中宣布,这可能会有所帮助。
答案 1 :(得分:3)
NSData *manufData = [NSData dataWithBytes:"12345AT18" length:9];
NSMutableData *pillowData = [[manufData subdataWithRange:NSMakeRange(5, 4)] mutableCopy];
uint32_t *bytes = pillowData.mutableBytes;
*bytes = CFSwapInt32(*bytes);
NSLog(@"%@", pillowData);
输出:
2018-01-25 15:52:39.067805-0600 test[23520:1338453] <38315441>
请注意,这并不会更改manufData
的内容。它只更改pillowData
中的字节副本。