提问人:Aaron Yordanyan 提问时间:10/3/2018 最后编辑:BlazeAaron Yordanyan 更新时间:11/23/2021 访问量:7068
C++ 如何将 char 数组转换为字节向量 (vector<byte>)
C++ how to convert char array to vector of bytes (vector<byte>)
问:
我有大量的字符数组
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>
答:
0赞
Blaze
10/3/2018
#1
std::vector<std::byte> bytes;
for (char &c : myCharArray) {
bytes.push_back(static_cast<std::byte>(c));
}
3赞
MikeMB
8/12/2020
#2
您可以将 的数组作为 的数组进行检查。因此,最有效的解决方案是: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 或类似的高效例程执行复制,而不是一个字节接一个地复制,并且必须在两者之间多次重新分配。
编辑:
请注意,此代码仅有效,因为本机数组上的返回类型保证为apointer。如果是,例如 a ,则将返回一个迭代器(它可能是也可能不是本机指针)。在这种情况下,例如,您需要使用并获取指向数组开头和结尾的指针。std::begin
myCharArray
std::vector<char>
std::begin/end
myCharVector.data()
myCharVector.data() + myCharVector.size()
评论
char myCharArray[]
std::vector<byte> myCharArray
std::vector<char> v(std::begin(myCharArray), std::end(myCharArray));