NSData轉Byte、Byte轉NSData

NSData轉Byte、Byte轉NSData

NSData提供可以儲存任意字元資料的物件,它提供了介面來使用儲存的資料,所以程式在物件的環境中會更方便,記憶體管理也更容易,不過有時候與C程式要互通時,還是必需要轉成Byte方式給C程式使用,所以下面將針對這兩種型別轉換做介紹。

NSData 轉 Byte

這裡假設有個檔案為danny.bin,我們利用NSData將檔案讀入並且轉成Byte陣列,這裡要注意的是,在C裡面並沒有Byte的類型,而是用unsigned char的方式。

//-----------start-----------
    unsigned char *cData;
    NSData* nsData=[NSData dataWithContentsOfFile:@"danny.bin"];
    cData = malloc([nsData length]);
    [nsData getBytes:cData];
//------------end------------

Byte 轉 NSData

再利用上述轉成Byte陣列的cData指標當內容再轉成NSData類型的nsData1

//-----------start-----------
 NSData* nsData1=[NSData dataWithBytes:cData length:sizeof(cData)];
//------------end------------