繁体   English   中英

在 Objective-C 中将 unsigned char* 转换为 NSData,反之亦然

[英]Convert unsigned char* to NSData and vice-versa in Objective-C

只想使用 objective-c 将 NSData 转换为 Byte 并将 Byte 转换为 NSData

    unsigned char* dataToByteArray = (unsigned char*) [data bytes];
    NSLog(@"Bytes is %@", dataToByteArray);
    
    NSData *datas = [NSData dataWithBytes:&dataToByteArray length:sizeof(dataToByteArray)];
    NSLog(@"Data is like%@", datas);
    NSLog(@"After convert bytes is %@", dataToByteArray)

两件事情:

传递缓冲区,不是指向缓冲区的指针,长度是指缓冲区中元素的数量,而不是缓冲区指针的大小:

[NSData dataWithBytes:dataToByteArray length:[data length]]

sizeof(dataToByteArray)变为指针的大小 - 8 个字节。 初始化器想知道缓冲区中有多少元素。

此外, %@仅用于记录 Objective-C 对象。 unsigned char *是 C 缓冲区,而不是 Objective-C object。 (您不能用一个“%something”直接记录 C 缓冲区,因为指针不包含足够的信息,例如,有多少元素以及何时停止记录。它也可以是指向单个unsigned char 。但是您可以使用%p来记录指针, NSLog(@"first byte: %c", dataToByteArray[0])来记录第一个字节等)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM