gpt4 book ai didi

c++ - 将 Vector 值复制到 char*

转载 作者:搜寻专家 更新时间:2023-10-31 02:20:26 24 4
gpt4 key购买 nike

我有三个 vector

std::vector<long long unsigned> eightByte_v;
std::vector<unsigned char> oneByteDelta_v;
std::vector<unsigned short> twoByteDelta_v;

然后我将两个值分别插入到 vector 中

eightByte_v.pushback(0x111111111111);
eightByte_v.pushback(0x2222222222222222);
oneByteDelta_v.pushback(0x33);
oneByteDelta_v.pushback(0x44);
twoByteDelta_v.pushback(0x5555);
twoByteDelta_v.pushback(0x6666);

我想将所有 vector 合并到 char* 中,如下所示。

    char[0] = 00
char[1] = 00
char[2] = 11
char[3] = 11
char[4] = 11
char[5] = 11
char[6] = 11
char[7] = 11
char[8] = 22
char[9] = 22
char[10] = 22
char[11] = 22
char[12] = 22
char[13] = 22
char[14] = 22
char[15] = 22
char[16] = 22
char[17] = 22
char[18] = 33
char[19] = 44
char[20] = 55
char[21] = 55
char[22] = 66
char[23] = 66

从 char 0 到 17 相当于 eightByte_v
从 char 18 到 19 相当于 oneByte_v
从 char 20 到 23 相当于 twoByte_v

我想我可以用 memcpy 来做,但是还有其他方法吗?

提前致谢!

最佳答案

像使用 union 这样的替代方案浮现在脑海中,但很难或不可能以定义的方式做到这一点:您总是会遇到结构打包和指针转换问题。

鉴于 C++ 标准保证 std::vector 中的数据连续性(并且可以使用 data() 函数访问数据缓冲区), memcpy 可以说是最好的方法。

请记住,char 的签名是平台相关的。您可能想要更明确;考虑使用 unsigned char

关于c++ - 将 Vector 值复制到 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32716729/

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