作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有大量的字符
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>
最佳答案
您可以检查 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))
);
这样,vector 预先知道要分配多少内存,并且它可以通过 memcpy 或类似的高效例程执行复制,而不是一个字节一个字节地复制另一个字节,并且必须在其间重新分配多次。
编辑:
请注意,此代码仅适用,因为 std::begin
的返回类型在 native 数组上保证是一个指针。如果myCharArray
是例如一个std::vector<char>
, 然后 std::begin/end
将返回一个迭代器(它可能是也可能不是本地指针)。在那种情况下,你会例如需要使用 myCharVector.data()
和 myCharVector.data() + myCharVector.size()
获取指向数组开头和结尾的指针。
关于C++ 如何将 char 数组转换为字节 vector (vector<byte>),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52629526/
我是一名优秀的程序员,十分优秀!