Tôi cần phải trao đổi tính xác thực của một số giá trị và chỉ tự hỏi nếu có bất kỳ điều gì trong Objective-C, hiện tại tôi đang trao đổi các byte với hàm CStyle bên dưới (rõ ràng là tôi có thể sử dụng lại). cụ thể tôi đã mất tích?Hoán đổi Endianness trong mục tiêu-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
Nhờ các con trỏ ở đây tôi đã sắp xếp các số nguyên, whats cách đơn giản nhất để trao đổi một phao?
int myInteger = CFSwapInt32BigToHost(myInteger);
(Mã trên được cập nhật)
float myFloat = floatFlip(myFloat);
gary
floatFlip() có vẻ ổn. Tôi sẽ (cá nhân) viết tên hàm và đối số được cố định chiều rộng trên bảng 'Float32 Float32Flip (Float32 inFloat) {union {SInt32 intValue; Float32 newFloat; } inData, outData; ...} ', nhưng tôi kỳ lạ. Nếu bạn đang sử dụng C++, tôi sẽ chuyển qua tham chiếu (cho trình biên dịch để kiểm tra độ tin cậy của byte), hoặc (C/objc) truyền con trỏ vì bạn chủ yếu quan tâm đến việc hoán đổi byte của đối số, thay vì một sự hoán đổi byte của một giá trị có khả năng được chuyển đổi/cắt ngắn/được diễn giải lại. – justin