在arduino平台上将String转换为HEX
Convert String to HEX on arduino platform
我正在做一个小型解析器,它应该将字符串转换为十六进制值,我正在使用 arduino 作为平台,但我正在使用它。
我的字符串是data = "5449"
其中每个元素都是一个字符,所以我想将其转换为十六进制值,如 dataHex = 0x54 0x59
,最后这些值应转换为 ASCII,如 dataAscii= TI
我该怎么做?
我正在考虑用 dataCharArray = 54 49
将其拆分为一个字符数组,然后将这些值转换为字符 T 和 I,但我不确定这是否是最好的方法。
提前致谢,
问候!
我现在没有在我的 PC 上安装 arduino,所以我们希望以下工作正常:
char nibble2c(char c)
{
if ((c>='0') && (c<='9'))
return c-'0' ;
if ((c>='A') && (c<='F'))
return c+10-'A' ;
if ((c>='a') && (c<='a'))
return c+10-'a' ;
return -1 ;
}
char hex2c(char c1, char c2)
{
if(nibble2c(c2) >= 0)
return nibble2c(c1)*16+nibble2c(c2) ;
return nibble2c(c1) ;
}
String hex2str(char *data)
{
String result = "" ;
for (int i=0 ; nibble2c(data[i])>=0 ; i++)
{
result += hex2c(data[i],data[i+1]) ;
if(nibble2c(data[i+1])>=0)
i++ ;
}
return result;
}
我正在做一个小型解析器,它应该将字符串转换为十六进制值,我正在使用 arduino 作为平台,但我正在使用它。
我的字符串是data = "5449"
其中每个元素都是一个字符,所以我想将其转换为十六进制值,如 dataHex = 0x54 0x59
,最后这些值应转换为 ASCII,如 dataAscii= TI
我该怎么做?
我正在考虑用 dataCharArray = 54 49
将其拆分为一个字符数组,然后将这些值转换为字符 T 和 I,但我不确定这是否是最好的方法。
提前致谢,
问候!
我现在没有在我的 PC 上安装 arduino,所以我们希望以下工作正常:
char nibble2c(char c)
{
if ((c>='0') && (c<='9'))
return c-'0' ;
if ((c>='A') && (c<='F'))
return c+10-'A' ;
if ((c>='a') && (c<='a'))
return c+10-'a' ;
return -1 ;
}
char hex2c(char c1, char c2)
{
if(nibble2c(c2) >= 0)
return nibble2c(c1)*16+nibble2c(c2) ;
return nibble2c(c1) ;
}
String hex2str(char *data)
{
String result = "" ;
for (int i=0 ; nibble2c(data[i])>=0 ; i++)
{
result += hex2c(data[i],data[i+1]) ;
if(nibble2c(data[i+1])>=0)
i++ ;
}
return result;
}