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

Fra*_*mes 2 c++ stl vector

我想以比这更好的方式转换std::uint32为:std::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)); 
Run Code Online (Sandbox Code Playgroud)

我一直在寻找类似的东西:

std::vector<std::uint8_t> vraw_data((std::uint8_t*)&base_rva, sizeof(base_rva));
Run Code Online (Sandbox Code Playgroud)

有什么建议么?

πάν*_*ῥεῖ 5

我一直在寻找类似的东西:

std::vector<std::uint8_t> raw_data((std::uint8_t*)&base_rva, sizeof(base_rva));
Run Code Online (Sandbox Code Playgroud)

没有这样的构造函数std::vector,但假设您想将内部表示的副本存储std::uint32_t在 a 中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));
Run Code Online (Sandbox Code Playgroud)

根据std::vector构造函数的(4) 。