如何在C ++中将字节向量(std :: vector )转换为不同的uint32_t,uint16_t和uint8_t变量

问题描述 投票:0回答:1

我有字节向量,std :: vector,我想将其信息提取为一些不同长度的整数。

例如,我可以有一个7字节的向量,我想在开头读取uint32_t,然后读取uint16_t,最后读取uint8_t。我需要一种方法来指定应从哪个元素开始读取以及应读取多少字节。

std::vector<std::uint8_t>& bytes(7);
uint32_t a;
uint16_t b;
uint8_t c;

// Could be something similar to this? 
// This yields an invalid conversion error: {aka unsigned char}’ to ‘const void*’
std::memcpy(&a, bytes[0], sizeof(uint32_t)); 
std::memcpy(&a, bytes[4], sizeof(uint16_t));
std::memcpy(&a, bytes[6], sizeof(uint8_t));
c++ vector byte
1个回答
0
投票

您可以使用向量中元素的地址来实现所需的内容:

std::memcpy(&a, &bytes[0], sizeof(std::uint32_t));
                ^
© www.soinside.com 2019 - 2024. All rights reserved.