我想做的是将数据存储在 std::vector<short>
中在std::vector<uint8_t>
,将每个 short 分成两个 uint8_t 值。我需要这样做,因为我有一个只会发送 std::vector<uint8_t>
的网络应用程序的,所以我需要转换为 uint8_t 以发送,然后在收到 uint8_t vector 时转换回来。
通常我会做的(以及我在查找问题时看到的)是:
std::vector<uint8_t> newVec(oldvec.begin(),oldvec.end());
但是,如果我理解正确,这将采用每个单独的短值,截断为 uint8_t 的大小,并在我想要的相同时创建一个包含一半数据量和相同条目数的新 vector 条目数量翻倍的数据量。
包含逆向过程的方法并尽可能避免复制的解决方案会有很大帮助。谢谢!
最佳答案
要在 8 位边界处拆分某些内容,您可以使用右移和掩码,即
uint16_t val;
uint8_t low = val & 0xFF;
uint8_t high = (val >> 8) & 0xFF;
现在您可以将最高价和最低价放入订单中的第二个 vector 中。
关于c++ - 如何将来自 std::vector<short> 的数据存储在 std::vector<uint8_t> 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45805727/