是否存在一种可移植且安全的方式来将boost::uint16_t生成的位模式解释为boost::int16_t?我有一个uint16_t,我知道它代表一个带符号的16位整数,编码为little-endian。我需要对此值执行一些带符号的算术运算,因此是否有说服编译器它已经是一个带符号的值?

如果我没记错的话,static_cast<int16_t>会转换该值,也许会更改其位模式。

最佳答案

如果要查找与强制类型转换不同的内容,则将其内存表示形式复制到boost::int16_t的内存表示形式,因为它的表示形式始于此。

编辑:如果您必须使其在大型字节序计算机上工作,只需向后复制字节。使用std::copystd::reverse

关于c++ - 将uint16_t解释为int16_t,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7464347/

10-10 18:47