便携式符号/无符号字节投,C ++
-
16-09-2019 - |
题
我使用符号到无符号字节(中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的例子有大端字节顺序而英特尔有小端)。在这方面,该代码将表现不同在不同的硬件体系结构。
不隶属于 StackOverflow