删除unsigned char的第一个字节*

时间:2015-04-09 12:46:33

标签: ios objective-c uiimage bytearray unsigned-char

我目前正在开发一个项目,我需要使用unsigned char *和不需要的字节。我将描述这种情况:

1 /我有一个加载图像的iOS应用程序(UIImage)。

2 /我将此UIImage转换为unsigned char *(感谢PaulSoft提供的ImageHelper here

3 /我将这个未签名的char *发送到一个可以在图像上发挥作用的库。

4 /库向我发回一个unsigned char *,在数组的开头有补充信息。

我在这里。我想删除这个数组的13个第一个字节,我不知道该怎么做。 我尝试将其转换为NSString *,裁剪并将其恢复。与NSData *相同。 我绝对不是Objective-C的专业人士,所以我对你可以拥有的每一个想法持开放态度。如果我不够清楚,请随时问我任何事情。

最好的问候;

克里斯。

1 个答案:

答案 0 :(得分:1)

正如@HotLicks在他的评论中所说,最简单的方法是简单地创建一个新的字符指针,将13个字节进一步指向缓冲区:

char* newPointer = oldPointer + 13;

您可能需要保留原始指针,以便在完成后可以释放内存块。 (如果您使用malloc(),{或calloc()或其中一个相关函数}或您正在使用的库创建了缓冲区,则需要在缓冲区上调用free()一旦你完成它就释放它。你正在使用的库上的文档应该告诉你是否需要释放缓冲区。这很重要。)

您还可以使用C函数memmove()将块的末尾复制到13个字节,但没有真正的理由这样做。 (您不应使用相关函数memcpy(),因为当移动的源和目标重叠时,它可能无法正常工作。)

编辑:

@HotLicks,您应该将评论作为答案发布,以便OP可以接受您的评论。自从你先发布它以来,你应该得到它的荣誉。