gpt4 book ai didi

c - 纯 C 中 .Net Buffer.BlockCopy 的类似物是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:19 27 4
gpt4 key购买 nike

我正在将一个 .Net 应用程序移植到 Objective-C,并且需要添加一段纯 C 代码。我有一个字节(或字符)数组,需要将一定数量的带偏移量的字节复制到不同的字符数组。在 .Net 上,这是 Buffer.BlockCopy 方法:

Buffer.BlockCopy(sourceArray, sourceOffset, resultArray, resultOffset, length);

如果我有两个数组、偏移量和长度值,我如何在纯 C 上执行此操作?不幸的是,我对纯 C 不够好,原生的 Objective-C bytearray 工作是基于它的。

如有任何帮助,我们将不胜感激。

最佳答案

假设数组确实不同,即没有重叠,您应该使用标准库函数 memcpy()做这个。

它只需要三个参数:

  • 目标指针
  • 源指针
  • 一个字节数

您可以根据缓冲区基地址和偏移量计算指针。像这样:

void BlockCopy(const uint8_t *source, size_t sourceOffset,
uint8_t *result, size_t resultOffset,
size_t length)
{
memcpy(result + resultOffset, source + sourceOffset, length);
}

当然,所有的长度和偏移量都必须有效,否则您将尝试覆盖随机内存并得到未定义的行为。

关于c - 纯 C 中 .Net Buffer.BlockCopy 的类似物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24526193/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com