Подтвердить что ты не робот

Перестановка конечности в Objective-C?

Мне нужно поменять сущность некоторых значений и просто подумать, есть ли что-нибудь в 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

Благодаря указателям здесь меняются целые числа, самый простой способ поменять float?

int myInteger = CFSwapInt32BigToHost(myInteger);

(Код выше обновлен)

float myFloat = floatFlip(myFloat);

Гэри

4b9b3361

Ответ 1

Как уже упоминалось, API есть CoreFoundation/CFByteOrder.h.

Ответ 2

Вы ищете OSSwapInt32() (или OSSwapInt16(), OSSwapInt64() и т.д.). См. OSByteOrder.h.

Также обратите внимание, что они не переносятся. Если вы только конвертируете в big-endian, вы можете захотеть использовать что-то вроде htonl(), которое включено в стандартную библиотеку <arpa/inet.h>. (К сожалению, однако, нет стандартной библиотеки для простой замены back-and-forth.)

Ответ 3

Вы нашли

Endian.h    
OSByteOrder.h