簡體   English   中英

如何從NSData創建字節數組

[英]How to create byte array from NSData

請任何人指導我如何從nsdata創建字節數組這里是我創建nsdata的代碼

NSData* data = UIImagePNGRepresentation(img);

如果您只想閱讀它們,那么有一種非常簡單的方法:

unsigned char *bytes = [data bytes];

如果要編輯數據, NSData上有一個方法可以執行此操作

// Make your array to hold the bytes
NSUInteger length = [data length];
unsigned char *bytes = malloc( length * sizeof(unsigned char) );

// Get the data
[data getBytes:bytes length:length];

注意:不要忘記 - 如果你要復制數據,你還必須在某個時候調用free(bytes) ;)

這是獲取數組的最快方法(但非常危險):

unsigned char *bytesArray = data.bytes;
NSUInteger lengthOfBytesArray = data.length;

在嘗試獲取字節#100之前,您應該檢查lengthOfBytesArray,如:

if (lengthOfBytesArray > 100 + 1)
{
    unsigned char byteWithOffset100 = bytesArray[100];
}

另一種安全且更像objc的方式:

- (NSArray*) arrayOfBytesFromData:(NSData*) data
{
    if (data.length > 0)
    {
        NSMutableArray *array = [NSMutableArray arrayWithCapacity:data.length];
        NSUInteger i = 0;

        for (i = 0; i < data.length; i++)
        {
            unsigned char byteFromArray = data.bytes[i];
            [array addObject:[NSValue valueWithBytes:&byteFromArray 
                                            objCType:@encode(unsigned char)]];
        }

        return [NSArray arrayWithArray:array];
    }

    return nil;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM