Свопинг порядка байтов в 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

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

int myInteger = CFSwapInt32BigToHost(myInteger);

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

float myFloat = floatFlip(myFloat);

gary

10
задан fuzzygoat 11 December 2009 в 18:59
поделиться

3 ответа

Помимо уже упомянутых API, существует CoreFoundation / CFByteOrder.h .

10
ответ дан 3 December 2019 в 21:21
поделиться

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

Также обратите внимание, что они не переносятся. Если вы выполняете преобразование только в big-endian, вы можете рассмотреть возможность использования чего-то вроде htonl () , которое включено в стандартную библиотеку . (К сожалению, нет стандартной библиотеки для простого переключения местами вперед и назад.)

5
ответ дан 3 December 2019 в 21:21
поделиться

Вы нашли

Endian.h    
OSByteOrder.h
2
ответ дан 3 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: