c++ - C ++如何将char数组转换为字节向量(向量)
问题描述
我有大量的字符
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))
);
通过这种方式,向量预先知道要分配多少内存,并且它可以通过 memcpy 或类似的高效例程执行复制,而不是一个接一个地复制一个字节,并且必须在其间重新分配多次。
编辑:
请注意,此代码仅有效,因为本std::begin
机数组的返回类型保证为指针。如果myCharArray
是例如 a std::vector<char>
,那么std::begin/end
将返回一个迭代器(它可能是也可能不是本机指针)。在这种情况下,您将需要使用myCharVector.data()
和myCharVector.data() + myCharVector.size()
获取指向数组开头和结尾的指针。
推荐阅读
- javascript - 将状态变量从 App.jsx 导出到 Login.jsx
- amazon-web-services - 让 Step Functions 等待 SQS 为空的最佳方法
- python - python Selenium 方法“driver.get('https.....') 不适用于 Twitter.com?
- python - 根据条件设置pandas df cell的值
- asp.net - Kentico CmsRepeater:当 DataBindByDefault="false" 时何时调用数据绑定
- python - sqlalchemy 从多个列表中选择重复项
- java - 查找数组中最长的偶数和
- reactjs - useRef 如何用于存储先前的状态
- javascript - 如何提高 Node JS 和 Tesseract.js 中的 OCR 准确性?
- python - 如何优化关于计算两点之间最短路径的脚本 - python