【iOS】實現二進制數據流一一對應的處理方法

近段時間接觸的項目中,從後臺獲取的數據並非是Json/XML格式的,而是最原始的二進制流,也就是我們所說的data格式,這就讓人鬱悶了,平時接觸的json格式,是可以通過的鍵值來將數據進行一一對應。而用到data,同樣也是可以的:

獲取到的數據:

獲取到的二進制Data: -- <8e043600 b2443600 08223500 5e303500 00000000 00000000 5e303500 00000000 3c483500 00000000 1c123600 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 1c123600 00000000 00000000>

1.在.h文件中定義一個結構體:

struct MyData
{
    int  price;
    double time;   
};

如果你有別的類型的例如float,long。也可以這麼寫。

2.在.m文件中初始化結構體:

struct MyData info
3.如果你的數據是重複多次的話,你可以用循環去截取:

int n = [Data length]/sizeof(info);
for (int i = 0; i<n; i++) {

[Data getBytes:&info range:NSMakeRange(0+sizeof(info)*i, sizeof(info))];
       NSLog(@"price:%d",info.price);
       NSLog(@"time:%.2f",info.time);
     }             

如果你只取一次,直接取length就行

[Data getBytes:&info length:sizeof(info)];





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章