我有字节向量 std::vector,我想将其信息提取为一些不同长度的整数。
\n\n例如,我可以有一个 7 字节的向量,我想在开头读取 uint32_t,然后读取 uint16_t,最后读取 uint8_t。我需要一种方法来指定应该从向量的哪个元素开始读取以及应该读取多少字节。
\n\nstd::vector<std::uint8_t>& bytes(7);\nuint32_t a;\nuint16_t b;\nuint8_t c;\n\n// Could be something similar to this? \n// This yields an invalid conversion error: {aka unsigned char}\xe2\x80\x99 to \xe2\x80\x98const void*\xe2\x80\x99\nstd::memcpy(&a, bytes[0], sizeof(uint32_t)); \nstd::memcpy(&a, bytes[4], sizeof(uint16_t));\nstd::memcpy(&a, bytes[6], sizeof(uint8_t));\nRun Code Online (Sandbox Code Playgroud)\n
您可以获取向量中元素的地址来实现您想要的:
std::memcpy(&a, &bytes[0], sizeof(std::uint32_t));
// ^
//or use .data() instead
std::memcpy(&a, bytes.data() + 0, sizeof(std::uint32_t));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7089 次 |
| 最近记录: |