ما هو أبسط طريقة لتحليل الملفات الثنائية في الكاكاو اللمس؟

StackOverflow https://stackoverflow.com/questions/402555

  •  03-07-2019
  •  | 
  •  

سؤال

ويقول لدي ملف ثنائي (ولدت مع جافا) يحتوي على قيمة عدد صحيح 32 بت. أنا حاليا باستخدام رمز الهدف-C التالية لتحليل ما يلي:

NSString *path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"dat"];
NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath:path];

unsigned long intValue;
memcpy(&intValue, [[file readDataOfLength:4] bytes], 4);
intValue = NSSwapBigLongToHost(intValue);

[file closeFile];

وسؤالي الأول هو أن نسأل إذا كانت هذه هي الطريقة الشائعة للقيام بهذه الأمور على اي فون لأنني لم أجد أي شيء قريب من DataInputStream جاوة.

ويرتبط سؤالي الثاني إلى سطر من التعليمات البرمجية مع memcpy. أنا لا undestand لماذا الجزء التالي (أكثر أناقة، وأقل "على مستوى منخفض") لا يعمل بدلا من ذلك:

[[file readDataOfLength:4] getbytes:&intValue];

وأنا اتلقى تحذيرا على بناء:

'NSData' may not respond to '-getbytes:'

في التنفيذ، وأنا اتلقى:

'NSInvalidArgumentException', reason: '*** -[NSConcreteData getbytes:]: unrecognized selector sent to instance
هل كانت مفيدة؟

المحلول

وبالنسبة للسؤال الأخير، استخدم getBytes (الأحرف الكبيرة B).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top