Necesito cambiar el endianness de algunos valores y me preguntaba si había algo disponible en Objective-C, actualmente estoy intercambiando los bytes con la función CStyle a continuación (que obviamente puedo reutilizar) Solo quería comprobar que no había nada específico que me faltaba?Intercambio de endianidad en Objective-C?
float floatFlip(float inFloat) {
union {
int intValue;
float newFloat;
} inData, outData;
inData.newFloat = inFloat;
outData.intValue = CFSwapInt32BigToHost(inData.intValue);
return(outData.newFloat);
}
EDIT_001
Gracias a los punteros Aquí he ordenado enteros, cuál es la forma más sencilla para intercambiar un flotador?
int myInteger = CFSwapInt32BigToHost(myInteger);
(Código anterior actualización)
float myFloat = floatFlip(myFloat);
Gary
floatFlip() se ve bien. Yo (personalmente) escribiría el nombre de la función y los argumentos para que sean de ancho fijo en el tablero 'Float32 Float32Flip (Float32 inFloat) {union {SInt32 intValue; Float32 newFloat; } inData, outData; ...} ', pero soy raro. Si está usando C++, pasaría por referencia (para que el compilador compruebe con cordura el recuento de bytes por usted), o (C/objc) pase un puntero ya que está interesado principalmente en un intercambio de bytes del argumento, en lugar de un intercambio de bytes de un valor potencialmente convertido/truncado/reinterpretado. – justin