我使用符号到无符号字节(中int8_t)投收拾byts。

uint32_t(uint8_t(byte)) << n

这适用于英特尔的Linux使用GCC。是便携其他平台/编译器中,例如PowerPC的? 有没有更好的办法做到这一点?使用的bitset是不可能在我的情况。 我使用经由升压stdint

有帮助吗?

解决方案

如果您使用boost/cstdint.hpp从升压整数库,那么,该类型定义是便携式的(跨平台的。)该boost/cstdint.hpp头是指用C来实现C99 stdint.h功能++

升压文档

  

头   提供了类型定义的有用   编写可移植代码,需要   某些整数宽度。所有的typedef的   在命名空间升压。

其他提示

它不是便携式的,如uint32_t的和uint8_t不是C ++标准的一部分的类型。所有这样的maipulations本身依赖于实现的。

在实践中,是的,它最有可能会在你遇到其他大多数平台上工作(特别是如果升压被移植到它)。但是,如果你正在写这些包装值到文件或网络套接字,你必须处理字节顺序(您的PowerPC的例子有大端字节顺序而英特尔有小端)。在这方面,该代码将表现不同在不同的硬件体系结构。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top