我们需要支持3个硬件平台- Windows (小端)和Linux Embedded (大端和小端)。我们的数据流依赖于它所使用的机器,并且需要将数据分解为位字段。在Linux上,我可以使用bswap_16/bswap_32/bswap_64进行小端转换。是否有两个平台(Windows和Linux)的通用内置?
假设我有4Byte整数,我想把它转换成2Byte短整型。在(小端和大端)短整型中,4Byte整型中有2个最低有效字节,我说对了吗?这样的代码在小端和大端处理器中的结果会是什么?int i = some_number; 在大端处理器中,2个最高有效字节将被复制,在小端处理器中,2个最低有效字节将被复制。
假设我在wchar_t x;中有一个unicode字符但我想知道,既然是,那么char的强制转换是否可以跨平台一致地工作?char c = (char) x ; // cast to char, this works on Windows
问题是,对char的强制转换是保证保留低位,还是可能保留高位?(我关心这里的小端/大端情况,尽管我意识到如果它在我的小端系统上工作,