#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. О боже, ты меня возненавидишь… я сохранял значения в неправильном порядке (в файле)… Итак, этот ваш метод работает просто отлично. Так что большое вам спасибо 🙂 вы зажигаете!