J'ai besoin d'échanger l'endianness de certaines valeurs et je me demandais s'il y avait quelque chose disponible en Objective-C, actuellement je permute les octets avec la fonction CStyle ci-dessous (que je peux évidemment réutiliser) je voulais juste vérifier spécifique je manquais?Échange d'Endianness 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
Merci aux pointeurs ici j'ai trié des entiers, ce qui est la façon la plus simple d'échanger un flotteur?
int myInteger = CFSwapInt32BigToHost(myInteger);
(code ci-dessus mis à jour)
float myFloat = floatFlip(myFloat);
gary
floatFlip() semble très bien. J'écrirais (personnellement) le nom de la fonction et les arguments à corriger sur toute la largeur du tableau 'Float32 Float32Flip (Float32 inFloat) {union {SInt32 intValue; Float32 nouveauFloat; } inData, outData; ...} ', mais je suis bizarre. Si vous utilisez C++, je passerais par référence (pour que le compilateur vérifie le nombre d'octets pour vous), ou (C/objc) passerait un pointeur puisque vous êtes principalement intéressé par un échange d'octets de l'argument, plutôt que un échange d'octets d'une valeur potentiellement convertie/tronquée/réinterprétée. – justin