Arduino:从两个十进制字符串中获取十六进制值

Arduino: Get Hex value from two decimal strings

本文关键字:字符串 十进制 获取 十六进制 两个 Arduino      更新时间:2023-10-16

我想做一个转换,但不知道怎么做。

最初,我得到一个十六进制值,如03 EE,它表示1006。现在,这些数据以字符串数组和小数形式表示:

[0] = "3"
[1] = "238"

从这种情况下,返回十进制1006的最简单方法是什么?

我在带有C++的Arduino上这样做

应该这样做:

const char* s[] = {"3", "238"};
int result = (std::stoi(std::string(s[0])) << 8)
          + std::stoi(std::string(s[1]));
std::cout << result;

请注意,我使用std::stoi,如果你不喜欢,请参阅:将字符串转换为int C++

实例

由于Arduino的String不能处理十六进制表示,您应该手动或使用其他库来处理(例如,如果可能的话,使用标准C库中的sprintf)。这是一种手动方式:

int decBytesToInt(const String &msByte, const String &lsByte)
{
    int res = 0;
    res |= (msByte.toInt() & 0xFF) << 8;
    res |= (lsByte.toInt() & 0xFF);
}

CCD_ 7和CCD_。

当然,假设int是16位的。