C++11/14 将 std::uint32 转换为 std::vector<std::uint8>

标签 c++ vector stl

我想转换 std::uint32std::vector<std::uint8>以比这更好的方式:

std::uint32_t base_rva = 0xccddee00;
std::vector<std::uint8_t> vraw_data;

//copying base_rva to raw_data
vraw_data.resize(sizeof(base_rva));
std::memcpy(vraw_data.data(), &base_rva, sizeof(base_rva)); 

我在寻找类似的东西:

std::vector<std::uint8_t> vraw_data((std::uint8_t*)&base_rva, sizeof(base_rva));

有什么建议吗?

最佳答案

I was looking for something like:

std::vector<std::uint8_t> raw_data((std::uint8_t*)&base_rva, sizeof(base_rva));

std::vector 没有这样的构造函数可用, 但假设您想存储 std::uint32_t 的拷贝std::vector<std::uint8_t> 中的内部表示你可以简单地做

 std::uint32_t data = 42;
 std::vector<std::uint8_t> raw_data( (std::uint8_t*)&data
                                   , (std::uint8_t*)&(data) + sizeof(std::uint32_t));

根据 std::vector constructors 中的 (4) .

关于C++11/14 将 std::uint32 转换为 std::vector<std::uint8>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38192181/

相关文章:

c++ - CMarkup XML 处理

C++ header 样式

c++ - 添加临时对象时 emplace_back 是否比 push_back 更好?

c++ - 如何初始化一个有n个默认值的队列?

c++ - 调用存储在 vector 中的对象的成员函数

c++ - 在单独的线程中插入时读取 std::map

c++ - boost 正则表达式 : Getting the Named Group

c++ - 如何使用 chrono 确定运行时间

c++ - std::vector<bool>::resize 的最终默认参数是标准的吗?

c++ - 有没有办法得到标准 :string's buffer