我目前正在开发一个项目,我需要使用unsigned char *和不需要的字节。我将描述这种情况:
1 /我有一个加载图像的iOS应用程序(UIImage)。
2 /我将此UIImage转换为unsigned char *(感谢PaulSoft提供的ImageHelper here
3 /我将这个未签名的char *发送到一个可以在图像上发挥作用的库。
4 /库向我发回一个unsigned char *,在数组的开头有补充信息。
我在这里。我想删除这个数组的13个第一个字节,我不知道该怎么做。 我尝试将其转换为NSString *,裁剪并将其恢复。与NSData *相同。 我绝对不是Objective-C的专业人士,所以我对你可以拥有的每一个想法持开放态度。如果我不够清楚,请随时问我任何事情。
最好的问候;
克里斯。
答案 0 :(得分:1)
正如@HotLicks在他的评论中所说,最简单的方法是简单地创建一个新的字符指针,将13个字节进一步指向缓冲区:
char* newPointer = oldPointer + 13;
您可能需要保留原始指针,以便在完成后可以释放内存块。 (如果您使用malloc()
,{或calloc()
或其中一个相关函数}或您正在使用的库创建了缓冲区,则需要在缓冲区上调用free()
一旦你完成它就释放它。你正在使用的库上的文档应该告诉你是否需要释放缓冲区。这很重要。)
您还可以使用C函数memmove()将块的末尾复制到13个字节,但没有真正的理由这样做。 (您不应使用相关函数memcpy()
,因为当移动的源和目标重叠时,它可能无法正常工作。)
@HotLicks,您应该将评论作为答案发布,以便OP可以接受您的评论。自从你先发布它以来,你应该得到它的荣誉。