复制到字节向量的函数会反转值

时间:2010-04-29 15:18:09

标签: c++ vector byte endianness

嘿,我写了一个函数将任何变量类型复制到一个字节向量中,但每当我插入一些东西时,它都会被反向插入。

这是代码。

template <class Type>
void Packet::copyToByte(Type input, vector<uint8_t>&output)
{
    copy((uint8_t*) &input, ((uint8_t*) &input) + sizeof(Type), back_inserter(output));
}

现在每当我添加一个值为0x2f1f的uint16_t时,它就会被插入为1f 2f而不是预期的2f 1f。

我在这里做错了什么?

问候,Xeross

3 个答案:

答案 0 :(得分:8)

如果你在little-endian机器上(例如,x86),字节将显示为反转(即,低位字节将出现在高位字节之前)。

如果您真的想要颠倒字节的顺序,可以使用std::reverse

答案 1 :(得分:4)

你没有做错任何事。您正在使用小型端机(例如Pentium)。在这些上,多字节值的较低有效字节存储在最小地址处。因此结果。

答案 2 :(得分:0)