我需要交换一些值的字节序,只是想知道Objective-C中是否有任何可用的东西,目前我用下面的CStyle函数交换字节(显然我可以重用)我只是想检查一下没什么特别的我错过了?
float floatFlip(float inFloat) {
union {
int intValue;
float newFloat;
} inData, outData;
inData.newFloat = inFloat;
outData.intValue = CFSwapInt32BigToHost(inData.intValue);
return(outData.newFloat);
}
感谢这里的指针我有整数排序,最简单的交换浮点数的方法是什么?
int myInteger = CFSwapInt32BigToHost(myInteger);
(以上代码已更新)
float myFloat = floatFlip(myFloat);
加里
答案 0 :(得分:10)
除了已经提到的API之外,还有CoreFoundation / CFByteOrder.h。
答案 1 :(得分:5)
您正在寻找OSSwapInt32()
(或OSSwapInt16()
,OSSwapInt64()
等)。请参阅OSByteOrder.h。
另请注意,这些都是非便携式的。如果您只是转换为big-endian,您可能需要考虑使用htonl()
这样的内容,它包含在标准库<arpa/inet.h>
中。 (不幸的是,没有标准的库可以简单地来回交换。)
答案 2 :(得分:2)
你找到了吗
Endian.h
OSByteOrder.h