【问题标题】:Convert String to HEX on arduino platform在arduino平台上将字符串转换为十六进制
【发布时间】:2016-04-04 14:00:41
【问题描述】:

我正在做一个小解析器,应该将字符串转换为十六进制值,我使用 arduino 作为平台,但我正在使用它。

我的字符串是data = "5449" 其中每个元素都是一个字符,所以我想将其转换为像 dataHex = 0x54 0x59 这样的 HEX 值,最后这些值应该转换为 ASCII 为 dataAscii= TI

我该怎么做?

我正在考虑用dataCharArray = 54 49 将其拆分为一个字符数组,然后将这些值转换为字符 T 和 I,但我不确定这是否是最好的方法。

提前致谢,

问候!

【问题讨论】:

    标签: arduino arduino-ide


    【解决方案1】:

    我现在没有在我的电脑上安装 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;
    }
    

    【讨论】:

    • 感谢它正在工作,我添加了一些缺少的右括号和结果,但其余的似乎工作正常,谢谢!
    • 关于一个简单的问题,如果我只想要十六进制的数据,就像函数hex2c 给出的dataHex = 0x54 0x59 一样,对吗?
    • hex2c 将两个十六进制字符转换为它们编码的字符。例如,“35”到“5”,“3B”到“;”,“6D”到“m”。看看一个 ASCII 表,我希望这会很清楚。
    猜你喜欢
    • 1970-01-01
    • 2016-08-09
    • 2014-06-27
    • 1970-01-01
    • 2018-01-31
    • 2018-01-22
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    相关资源
    最近更新 更多