转换char时Arduino DUE和Arduino UNO之间的区别


浮华丶
2025-02-13 12:04:55 (3天前)


使用I2C读取CMPS 10指南针时,音高包含在一个字节中
它在+/- 90度范围内。

使用char来接受结果并转换为int在

Arduino的
</跨度>
Uno’(CMPS_GET_PITCH); //请求并读取音高值
while(Serial1.available()&lt; 1);
pitch = Serial1.read();

}



Arduino的
</跨度>
DUE -1到-90的负数是255到165

这是在某处记录的,如何在不诉诸IF语句的情况下获得正确的负数?


2 条回复
  1. 0# 石茶 | 2019-08-31 10-32



    C ++标准没有指定是否

    char

    类型是签名或未签名。在您的情况下,UNO使用签名字符,但截止使用未签名字符。



    您可以直接指定变量的签名:




    1. signed char pitch;

    2. </code>


    或者,您可以使用固定长度的整数typedef(在





    报头):




    1. int8_t pitch;

    2. </code>


    通常,您应该更喜欢使用精确宽度类型,除非您有充分的理由不这样做。


登录 后才能参与评论