Đây là phần theo dõi this posting nhưng với một câu hỏi khác nên tôi cảm thấy tôi nên hỏi trong một chuỗi riêng biệt.Làm thế nào tôi có thể đảo ngược thứ tự byte của NSInteger hoặc NSUInteger trong mục tiêu-c
Tôi đang ở điểm mà tôi có bốn byte liên tiếp trong bộ nhớ mà tôi đã đọc từ một tệp. Tôi muốn lưu trữ chúng như là một mảng bit (giá trị int thực tế của chúng không quan trọng cho đến sau này). Khi tôi in ra những gì trong int của tôi, tôi nhận thấy rằng nó dường như được lưu trữ theo thứ tự ngược lại (ít endian).
Có ai có phương pháp tốt để đảo ngược thứ tự các byte không. Sau đó, một khi đảo ngược, chọn ra các bit liên tiếp kéo dài hai byte và chuyển đổi trở lại một int?
unsigned char data[] = { 0x00, 0x02, 0x45, 0x28 };
NSInteger intData = *((NSInteger *)data);
NSLog(@"data:%08x", intData); // data:28450200
Cảm ơn tôi đã xem xét một chút và không tìm thấy NSSwapBigIntToHost. Tôi đã kết thúc một số thao tác bit thấp hơn như bạn đã đề xuất. Tôi đang làm một chút của một giả định rằng ints của tôi sẽ được 32-bit trong mã của tôi. Những gì tôi đã kết thúc làm là tạo ra một unsigned char * tref = (unsigned char *) &temp; Tôi sau đó lặp qua và trao đổi các byte, sau đó đúc tref đến một số nguyên. Không đẹp nhưng hoạt động miễn là tôi ở 32-bit. – Scott
câu hỏi và câu trả lời tuyệt vời – LolaRun