Obj-C считывает порядковый номер в конце двоичного файла? (xcode)

#iphone #objective-c #xcode

#iPhone #objective-c #xcode

Вопрос:

Я ищу способ получить значение int из двоичного файла. Итак, допустим, у меня есть этот файл «myfile.dat», в котором с моего компьютера я сохранил много материала… Теперь мне нужно прочитать этот файл с моего iPhone и отобразить данные…

в «myfile.dat» у меня есть это (двоичный файл, и все целые числа имеют порядковый номер с маленькой запятой): 0-12: строка подписи 13-16: номер int (обратите внимание, что длина = 4)

Итак, используя NSData, я знаю, что могу прочитать из pos 13 в pos 16 и получить эти байты… я могу правильно получить первую строку 0-12, но я не могу прочитать pos 13-16 и преобразовать ее в значение int в Obj-C …. ;(

У меня есть что-то вроде:

 unsigned char bytes[length];
[_data getBytes:bytes range:NSMakeRange(offset, length)];
int32_t elem = OSReadLittleInt32(bytes, 0);
  

Теперь я новичок, когда дело доходит до Obj-C и C / C … всю свою жизнь я работал с C # (грустно)…

Кто-нибудь может помочь? ЗАРАНЕЕ СПАСИБО!

Ответ №1:

Попробуйте:

 unsigned long bytes;
[_data getBytes: amp;bytes length: sizeof(unsigned long)];

NSLog(@"%i", NSSwapLittleLongToHost(bytes));
  

Комментарии:

1. Я все еще получаю какой-то неправильный номер: 544106784. Что неверно .. правильное число, которое я ищу, — 333.

2. Можете ли вы добавить выходные данные NSLog(@"data: %@", [_data description]) ?

3. О боже, ты меня возненавидишь… я сохранял значения в неправильном порядке (в файле)… Итак, этот ваш метод работает просто отлично. Так что большое вам спасибо 🙂 вы зажигаете!