我想做转换,但不知道如何。
最初我得到像03 EE
这样代表1006
的十六进制值。
现在这些数据表示在一个String数组中,并以小数表示:
[0] = "3"
[1] = "238"
从这种情况开始,回到小数1006
的最简单方法是什么?
我在带有C ++的Arduino上执行此操作
答案 0 :(得分:1)
这样的事情应该这样做:
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
,如果您不喜欢,请参阅:Convert string to int C++了解更多转化可能性
答案 1 :(得分:0)
由于Arduino String
无法处理十六进制表示,您应该手动或使用其他库(例如,如果可能的话,使用标准C库中的sprintf
)。这是一种手动方式:
int decBytesToInt(const String &msByte, const String &lsByte)
{
int res = 0;
res |= (msByte.toInt() & 0xFF) << 8;
res |= (lsByte.toInt() & 0xFF);
}
msByte
和lsByte
相应地是最重要且最不重要的字节十进制表示。
假设int
当然是16位。