C ++如何将char数组转换为字节向量(vector <byte>)

时间:2018-10-03 14:36:40

标签: c++

我有很多字符

char myCharArray[] = {
  0x9B,0x3E,0x34,0x87,0xFD,0x24,0xB4,0x64,0xBA,0x80,0x04,0xFD,
  0xDF,0x23,0x41,0xEE,0x00,0x00,0x00,0x00,0xAC,0xF9,0x8F,0x00,
  ...
}

如何将 myCharArray 转换为vector<byte>

2 个答案:

答案 0 :(得分:1)

std::vector<std::byte> bytes;
for (char &c : myCharArray) {
    bytes.push_back(static_cast<std::byte>(c));
}

答案 1 :(得分:0)

您可以将char的数组作为std::byte的数组进行检查。因此,最有效的解决方案是:

#include <iterator> // for std::begin / end

std::vector<std::byte> v(
    reinterpret_cast<std::byte*>(std::begin(myCharArray)), 
    reinterpret_cast<std::byte*>(std::end(myCharArray))
);

通过这种方式,向量可以预先知道要分配多少内存,它可以通过memcpy或类似的高效例程执行复制,而不必一个接一个地复制一个字节,并且在两次之间必须重新分配多次。