2015-06-15 2 views
-2

Я получаю данные от веб-звонка. Вот данные.Как читать двоичные данные, хранящиеся в NSData

00000001 00045043 4c4e0000 00023744 92f4cd44 92f4cd44 92f4cd44 92f4cd3c a3d70a00 00014de2 b767a044 93800044 93800044 93800044 93800040 A0000000 00014de2 bdd04044 94400044 94400044 93db3344 94170a3f a6666600 00014de2 c8ccc044 93ddc344 93ddc344 93ddc344 93ddc33e 99999a00 00014de2 ce4b0044 93bd1f44 943d7144 9394cd44 93eccd41 e8e14800 00014de2 d01fc044 93eb3344 93eb3344 93b00044 93b00040 C0000000

формат данных фиксирован (Мы знаем, где он хранит INT/поплавок и т.д.

Вопрос в том, как я могу читать и хранить его в индивидуальном против ariables Например, первые 4 байта здесь указывают количество возвращенных символов (1)

+0

На это нельзя ответить, не зная спецификации. У вас есть это? – picciano

+0

В основном я знаю, что первые 4 байта являются целыми, чем у меня есть 2 байта, а затем 4 байта и так далее ... Это помогает? –

+0

В чем заключаются понятия ints/floats/etc? – Droppy

ответ

0

NSData имеет метод func getBytes(buffer: UnsafeMutablePointer<Void>, range: NSRange), который должен вам помочь. Вы можете захватить каждую вещь в своей структуре, указав диапазон.

Так что вы можете сделать:

var length: Int = 0 
myData.getBytes(&length, range: NSMakeRange(0, 4)) 

и так далее для каждого типа, диапазон, что вам нужно

+0

Я прочитал первые 4 байта [0] = '\ 0', [1] = '\ 0', [2] = '\ 0', [3] = '\ x01 'в массиве байтов. Но как я могу преобразовать эти 4 байта, чтобы дать мне Integer 1. Я попробовал NSScanner scanHexInt..No Luck –

0

NSMutableString * stringHexForm = [NSMutableString строка];

for(int i = startLocation ; i < (startLocation + nCharsToReadIn) ; i++) 
{ 
    unsigned char byte; 

    [dataIn getBytes : &byte range : NSMakeRange(i, 1)]; 

    NSString *tempStr=[NSString stringWithFormat:@"%02x",byte]; 

    [stringHexForm appendString:[NSString stringWithFormat:@"%@",tempStr]]; 
} 

неподписанный результат = 0;

NSScanner *scanner = [NSScanner stringHexForm]; 

[scanner scanHexInt:&result]; 

return result; 
Смежные вопросы