Bu, this posting'a kadar olan bir izlemedir ancak farklı bir soruyla ayrı bir iş parçacığından sormam gerektiğini hissettim.Bir NSInteger veya NSUInteger nesnesinin bayt sırasını nasıl tersine çevirebilirim?
Bir dosyadan okuduğum bellekte dört ardışık baytım olduğu noktadayım. Bunları bir bit dizisi olarak saklamak istiyorum (bunların gerçek int değeri daha sonraya kadar önemli değildir). Int'mdeki şeyi yazdığımda, ters sırada (küçük endian) saklandığını fark ettim.
Herhangi birinin, baytların sırasını tersine çevirmek için iyi bir yöntemi var mı. Sonra bir kez tersine, iki bayt kapsayan ardışık bitleri seçip bir int dönüşüyor?
unsigned char data[] = { 0x00, 0x02, 0x45, 0x28 };
NSInteger intData = *((NSInteger *)data);
NSLog(@"data:%08x", intData); // data:28450200
NSSwapBigIntToHost'u bulamıyordum. Önerdiğin gibi biraz daha az manipülasyon yapıyordum. Kodlarımda benim in-line'lerin 32-bit olacağını varsayıyorum. Yaptığım şey, imzalanmamış bir char * tref = (imzasız char *) yaratıyordu. &temp; Daha sonra bayttan geçip baytları değiştirdim, sonra tref'i bir tamsayıya dönüştürdüm. Güzel değil ama 32-bit olduğum sürece çalışıyor. – Scott
harika bir soru ve cevap – LolaRun