是否存在一种可移植且安全的方式来将boost::uint16_t
生成的位模式解释为boost::int16_t
?我有一个uint16_t
,我知道它代表一个带符号的16位整数,编码为little-endian。我需要对此值执行一些带符号的算术运算,因此是否有说服编译器它已经是一个带符号的值?
如果我没记错的话,static_cast<int16_t>
会转换该值,也许会更改其位模式。
最佳答案
如果要查找与强制类型转换不同的内容,则将其内存表示形式复制到boost::int16_t
的内存表示形式,因为它的表示形式始于此。
编辑:如果您必须使其在大型字节序计算机上工作,只需向后复制字节。使用std::copy
和std::reverse
。
关于c++ - 将uint16_t解释为int16_t,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7464347/