You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino中如何将十六进制字符串高效转换为字节?

Arduino十六进制字符串转byte的简洁方案

要把"CE"这类十六进制字符串转换成对应byte值(比如0xCE即206),直接用strtol()函数一行就能解决:

String inString = "CE";
byte outByte = static_cast<byte>(strtol(inString.c_str(), nullptr, 16));

为什么之前的方法失效?

  • String.toInt()默认按十进制解析,"CE"不是合法十进制数,所以返回0;
  • 拼接"0x"前缀后再用toInt()也没用,因为Arduino的toInt()不识别十六进制前缀,遇到非数字字符就停止解析,结果还是0。

之前的尝试及输出

原始尝试代码

String inString = "CE";
byte outByte;
outByte = inString.toInt();
printData("outByte: " + String(outByte), serialchan);

输出:

outByte: 0

其他尝试代码

String inString = "CE";
byte outByte;

char tempchar[2];
String tempstring;
inString.toCharArray(tempchar, 4); // 用4才生效,2不行
printData("inString: " + String(inString), serialchan);
printData("inString hex: " + String(tempchar), serialchan);

tempstring = "0x" + String(inString);
printData("inString in string hex: " + String(tempstring), serialchan);
outByte = (byte)tempstring.toInt();
printData("outByte: " + String(outByte), serialchan);

输出:

outByte: 0                                                         
inString: CE                                                   
inString hex: CE                                                 
inString in string hex: 0xCE                                      
outByte: 0

内容的提问来源于stack exchange,提问作者Bob Dole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 08:15:26