如何在C++中将字节向量(std::vector<uint8_t>)转换为不同的uint32_t,uint16_t和uint8_t变量
How to cast, in C++, a byte vector (std::vector<uint8_t>) into different uint32_t, uint16_t and uint8_t variables
我有字节向量,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));
您可以在向量中获取元素的地址来实现您想要的:
std::memcpy(&a, &bytes[0], sizeof(std::uint32_t));
// ^
//or use .data() instead
std::memcpy(&a, bytes.data() + 0, sizeof(std::uint32_t));
相关文章:
- 从值小于256的uint16到uint8的Endian安全转换
- 将 Uint8(浮点AUDIO_F32)转换为int16_t(16 位 PCM)
- 错误:无法将'uint8* {aka unsigned int*}'转换为"常量emxArray_uint8_T*"?
- 将具有不同字段的结构转换为 uint8 的数组
- 如何将 uint8 列表转换为其相应的有符号值
- 如何将元素从 Swift 中的 [UnsafeMutablePointer<UInt8>] 转换为 C++ 中的 UInt8 *
- 从字符串转换为 uint8,反之亦然
- 将 UInt8 C++值转换为 C# 字节数组
- 警告缩小转换范围(uint32 到 uint8)
- 将 uint8 转换为范围为 0-1 的浮点数的最有效方法
- 将 Uint8 转换为无符号字符 RGB 值
- 将uint8的矢量转换为ascii十六进制字符串的更好方法
- 从std::string转换为uint8
- Jagged Uint8数组转换为C#字节
- 将"wstring"转换为"const UInt8 *"
- 我如何将bitset转换为字节/uint8数组
- 如何在c++中将UINT8转换为UINT32 ?
- 我如何将uint8_t (SDL中的Uint8)转换为字符串
- 将uint8 vector类型的元素转换为stringstream类型
- Node.js 6增加了将Buffer.from()转换为const UInt8*的功能