我使用的符号到无符号字节(中int8_t)投收拾byts。
uint32_t(uint8_t(byte)) << n
这适用于使用英特尔的Linux GCC。 是便携其他平台/编译器中,例如PowerPC的? 有没有更好的办法做到这一点? 使用的bitset是不可能在我的情况。 我通过升压用stdint
我使用的符号到无符号字节(中int8_t)投收拾byts。
uint32_t(uint8_t(byte)) << n
这适用于使用英特尔的Linux GCC。 是便携其他平台/编译器中,例如PowerPC的? 有没有更好的办法做到这一点? 使用的bitset是不可能在我的情况。 我通过升压用stdint
如果您正在使用boost/cstdint.hpp
来自Boost整数库,那么,该类型定义是可移植的(跨平台)的boost/cstdint.hpp
头是指用C来实现C99 stdint.h功能++。
从Boost文档 :
报头提供的的typedef的有用用于写入要求一定整数宽度的可移植代码。 所有的typedef的是在名字空间boost。
这是不可移植,为uint32_t的和uint8_t不是C ++标准的一部分的类型。 所有这些maipulations本质上是依赖于实现的。
在实践中,是的,它最有可能会在你遇到(尤其是如果升压被移植到它)其他大多数平台上工作。 但是,如果你正在写这些包装值到文件或网络套接字,你必须处理字节顺序(您的PowerPC的例子有大端字节顺序而英特尔有小端)。 在这方面,代码将不同的表现在不同的硬件架构。