vs C 交叉末日联盟

vs c++ cross endian union

本文关键字:末日 联盟 vs      更新时间:2023-10-16

可能的重复:
有什么方法可以通过Little Endian程序读取大型Endian数据?

我在项目中有下面的联合结构。有什么方法可以修改工会以大型末日格式阅读它?或获取正确数据类型的替代方法?

struct AptConstItem {
    AptConstItemType type;
    union {
        const char *strvalue;
        unsigned int numvalue;
    };
};

谢谢。

您使用相同的基本技术,无论伊尼亚语如何:阅读大恩迪安:

uint32_t
readBigEndian( std::istream& binaryInput )
{
    uint32_t result 
            = (binaryInput.get() << 24) & 0xFF000000;
    result |= (binaryInput.get() << 16) & 0x00FF0000;
    result |= (binaryInput.get() <<  8) & 0x0000FF00;
    result |= (binaryInput.get()      ) & 0x000000FF;
    return result;
}

对于小恩迪安(Little Endian),您只需扭转班次和口罩的顺序。