删除 unsigned char* 的第一个字节
Remove first bytes of a unsigned char*
我目前正在处理一个项目,我需要在其中处理 unsigned char* 和不需要的字节。我来描述一下情况:
1/ 我有一个 iOS 加载图像 (UIImage) 的应用程序。
2/我把这个UIImage转成unsigned char*(感谢PaulSoft给的ImageHelper here
3/ 我将这个 unsigned char* 发送到一个在图像上施展魔法的库。
4/ 库发回一个 unsigned char* 数组开头的补充信息。
我在这里。我想删除这个数组的前 13 个字节,但我不知道该怎么做。
我试过将它转换为 NSString*,裁剪它并取回它。与 NSData* 相同。
我绝对不是 Objective-C 方面的专业人士,所以我愿意接受您的每一个想法。如果我不够清楚,请随时问我。
此致;
克里斯
正如@HotLicks 在他的评论中所说,最简单的做法是简单地创建一个新的 char 指针,指向缓冲区中的 13 个字节:
char* newPointer = oldPointer + 13;
您可能需要保留原始指针,以便在用完后释放内存块。 (如果您使用 malloc()
、{或 calloc()
或相关函数之一创建了缓冲区,或者您正在使用的库这样做了,则需要在缓冲区上调用 free()
完成后释放它。您正在使用的库中的文档应该会告诉您是否需要释放缓冲区。这很重要。)
您也可以使用 C 函数 memmove() 将块末尾向上复制 13 个字节,但没有真正的理由这样做。 (您不应使用相关函数 memcpy()
,因为当移动的源和目标重叠时,它可能无法正常工作。)
编辑:
@HotLicks,您真的应该 post 您的评论作为答案,以便 OP 可以接受您的评论。由于您 post 首先编辑了它,因此您应得的荣誉。
我目前正在处理一个项目,我需要在其中处理 unsigned char* 和不需要的字节。我来描述一下情况:
1/ 我有一个 iOS 加载图像 (UIImage) 的应用程序。
2/我把这个UIImage转成unsigned char*(感谢PaulSoft给的ImageHelper here
3/ 我将这个 unsigned char* 发送到一个在图像上施展魔法的库。
4/ 库发回一个 unsigned char* 数组开头的补充信息。
我在这里。我想删除这个数组的前 13 个字节,但我不知道该怎么做。 我试过将它转换为 NSString*,裁剪它并取回它。与 NSData* 相同。 我绝对不是 Objective-C 方面的专业人士,所以我愿意接受您的每一个想法。如果我不够清楚,请随时问我。
此致;
克里斯
正如@HotLicks 在他的评论中所说,最简单的做法是简单地创建一个新的 char 指针,指向缓冲区中的 13 个字节:
char* newPointer = oldPointer + 13;
您可能需要保留原始指针,以便在用完后释放内存块。 (如果您使用 malloc()
、{或 calloc()
或相关函数之一创建了缓冲区,或者您正在使用的库这样做了,则需要在缓冲区上调用 free()
完成后释放它。您正在使用的库中的文档应该会告诉您是否需要释放缓冲区。这很重要。)
您也可以使用 C 函数 memmove() 将块末尾向上复制 13 个字节,但没有真正的理由这样做。 (您不应使用相关函数 memcpy()
,因为当移动的源和目标重叠时,它可能无法正常工作。)
编辑:
@HotLicks,您真的应该 post 您的评论作为答案,以便 OP 可以接受您的评论。由于您 post 首先编辑了它,因此您应得的荣誉。