在Objective-C中交换Endianness?

时间:2009-12-10 21:43:03

标签: objective-c endianness

我需要交换一些值的字节序,只是想知道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);
}

EDIT_001

感谢这里的指针我有整数排序,最简单的交换浮点数的方法是什么?

int myInteger = CFSwapInt32BigToHost(myInteger);

(以上代码已更新)

float myFloat = floatFlip(myFloat);

加里

3 个答案:

答案 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