Arduino - 隐藏价值到DEC HEX价值

时间:2017-01-13 21:13:59

标签: c++ arduino

我有一个读取HEX字节的串行事件。它存储为表示HEX值的INT。我需要将其转换回Dec值。

示例:

串行发送0x20 - 存储为INT 32 - 我想将其转换为INT 20

我试过以下但是它打印好但不会转换。我怎么也得到它。

Sudo Code:

int from_ser;
int new_value;
Serial.println(from_ser); // Prints 32
Serial.println(from_ser,HEX); // Prints 20 ( The value we want!)
new_value = (from_ser,HEX);
Serial.println(new_value); // Prints 16 - Why !!!

由于

3 个答案:

答案 0 :(得分:2)

Serial.println(from_ser,HEX); // Prints 20 ( The value we want!)

这是Serial上println方法的一个功能。在决定如何格式化第一个参数中的值时,会有代码检查第二个参数。请注意,HEX只是一个值为16的显式常量。

new_value = (from_ser,HEX);

这是一种完全不同的表达方式。在C ++中,您可以使用逗号分隔两个表达式,代码将评估两个表达式并生成第二个表达式的值。此处HEX是第二个值,它只是16的名称,因此new_value被分配给整数16。

答案 1 :(得分:1)

格式化为十进制或十六进制是对OUTPUT的操作。它不会影响变量的实际值,也不会给出具有不同值的整数。它只是以不同方式格式化输出。所以你的“转换”价值的问题毫无意义。只需通过指定的方式发送变量。

在C ++中,表达式a , b中的逗号运算符评估a并丢弃结果,然后给出评估b的结果。因此new_value = (from_ser, HEX)给出HEX的值。输出new_value后,您证明HEX的值为16

答案 2 :(得分:-1)

0x20(十六进制)是32(十进制)。你为什么要20岁?那是错的。 你会用0xFF做什么呢?