gpt4 book ai didi

c++ - 需要帮助将 uint8_t 数组转换为 NSMutableData

转载 作者:太空狗 更新时间:2023-10-29 23:19:56 26 4
gpt4 key购买 nike

我正在尝试将一些 objective-c 代码 (mac) 移植到 c++ 代码 (win)。但是,我有一个问题。在 Mac 上,我的数据以 NSMutableData 对象的形式出现,在 Windows 上,它以 uint8_t 数组的形式出现。我需要将我的 uint8_t 数据转换为与 NSMutableData 中相同类型的数据。帮助!

//on the mac
foo(NSMutableData* received)
{
void* data = malloc([received length]);
memcpy(data, [received mutableBytes], [received length]);

bar(data);
}

//on windows
foo(const boost::shared_array<uint8_t>& received)
{
void* data = ... //magic needs to happen here

bar(data);
}

最佳答案

bar 是否像您的 Mac 示例所示那样期望获得它拥有的一 block 内存并释放自己?

void *data = malloc(received_size); //shared_array can't give you the size info
memcpy(data,received.get(),received_length);
bar(data);

如果 bar 没有获得内存的所有权,那么您可以将数据传递给它而无需制作拷贝:

void *data = static_cast<void*>(received.get());

关于c++ - 需要帮助将 uint8_t 数组转换为 NSMutableData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5902355/

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