C ++将unsigned转换为签名

时间:2016-06-30 21:21:10

标签: c++ arduino reinterpret-cast

我试图复制this,但它无法编译。

unsigned char x = 0;
reinterpret_cast<signed char>(x);

它说

C:\Users\SXG5558\Documents\Arduino\sketch_jun30a\sketch_jun30a.ino: In function 'void setup()':

sketch_jun30a:3: error: invalid cast from type 'unsigned char' to type 'signed char'

     reinterpret_cast<signed char>(x);

                                    ^

exit status 1

编辑:

要清楚,我确实想要重新解释内存中从有符号到无符号的位。我正在编写一个读取和写入无符号数据的I2C库,但我正在使用该库来控制已签名的传感器,因此我想重新解释转换实际数据。

1 个答案:

答案 0 :(得分:5)

cppreference.com的相关部分是

  

键入别名

     

当动态类型为DynamicType的对象的指针或引用是reinterpret_cast(或C样式强制转换)为指针或对不同类型AliasedType的对象的引用时,强制转换总是成功,但结果指针或引用可能只是如果满足下列条件之一,则用于访问对象:

     

[...]

     
      
  • AliasedType是DynamicType
  • 的(可能是cv限定的)有符号或无符号变体   
     

[...]

即。你忘记了你链接的例子中的&