Ответ 1
Как уже упоминалось, API есть CoreFoundation/CFByteOrder.h.
Мне нужно поменять сущность некоторых значений и просто подумать, есть ли что-нибудь в 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);
}
Благодаря указателям здесь меняются целые числа, самый простой способ поменять float?
int myInteger = CFSwapInt32BigToHost(myInteger);
(Код выше обновлен)
float myFloat = floatFlip(myFloat);
Гэри
Как уже упоминалось, API есть CoreFoundation/CFByteOrder.h.
Вы ищете OSSwapInt32()
(или OSSwapInt16()
, OSSwapInt64()
и т.д.). См. OSByteOrder.h.
Также обратите внимание, что они не переносятся. Если вы только конвертируете в big-endian, вы можете захотеть использовать что-то вроде htonl()
, которое включено в стандартную библиотеку <arpa/inet.h>
. (К сожалению, однако, нет стандартной библиотеки для простой замены back-and-forth.)
Вы нашли
Endian.h
OSByteOrder.h