Kev*_*vin 4 pointers objective-c
我需要字节交换一些表示无符号16位整数的字节.以下代码有效,但似乎有点荒谬:
CFSwapInt16(*(uint16_t*)[[myNSDataVariable] bytes]);
Run Code Online (Sandbox Code Playgroud)
以下是我推断的内容:
[[myNSDataVariable] bytes] 返回一个指向字节数组的void指针.
将(uint16_t*)void指针强制转换为uint16_t指针.
最后的外部*解引用uint16_t指针,提供对实际uint16_t值的访问.
是否有更优雅的方式来获得uint16_t价值NSData?
我会说以下内容更具可读性:
uint16_t *valuePtr = (uint16_t *)[myNSDataVariable bytes];
uint16_t swappedValue = CFSwapInt16(*valuePtr);
Run Code Online (Sandbox Code Playgroud)
但最终你会在某个地方进行这种转换.如果您不止一次这样做,我建议使用一个更清晰的功能:
uint16_t SwappedIntegerFromData(NSData *data) {
uint16_t *valuePtr = (uint16_t *)[data bytes];
return CFSwapInt16(*valuePtr);
}
uint16_t value = SwappedIntegerFromData(myNSDataVariable);
Run Code Online (Sandbox Code Playgroud)
但同样,转换必须在某个地方进行.
| 归档时间: |
|
| 查看次数: |
258 次 |
| 最近记录: |