10

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

加里

4

3 回答 3

10

除了已经提到的 API,还有 CoreFoundation/ CFByteOrder.h

于 2009-12-10T22:02:32.540 回答
5

您正在寻找OSSwapInt32()(或OSSwapInt16(),OSSwapInt64()等)。请参阅OSByteOrder.h

另请注意,这些是非便携式的。如果您只是转换为大端格式,您可能需要考虑使用htonl()标准库中包含的类似的东西<arpa/inet.h>。(不幸的是,没有标准库可以简单地来回交换。)

于 2009-12-10T21:57:34.187 回答
2

你有没有发现

Endian.h    
OSByteOrder.h
于 2009-12-10T21:50:49.210 回答