Arduino:将字符串数组转换为字节数组

问题描述

我正在开发一个项目,我首先需要将有效负载构建为字符串,然后在发送有效负载时将其转换为字节。我在转换时遇到问题。

有效载荷构建在字符串中的原因是由于它生成每个单个字符串的方式,“02”、“12”、“31”、“03”和“36”是不同后的结果计算方法

String lockHexString[5];  
lockHexString[0] = "02"; 
lockHexString[1] = "12"; 
lockHexString[2] = "31"; 
lockHexString[3] = "03"; 
lockHexString[4] = "36"

现在当我有 lockHexString 时,我需要将 lockHexString 转换为 byteArray,所以它看起来像

byte lockByte[5] = {0x02,0x12,0x31,0x03,0x36};

解决方法

如果它们总是 2 个字符,我不会在 Arduino 上使用繁重的标准函数。简单:

unsigned getdigit(const char ch)
{
    switch(ch)
    {
        case '0' ... '9':
          return ch - '0';
        case 'a' ... 'f':
          return ch - 'a';
        case 'A' ... 'F':
          return ch - 'A';
        default:
          return 0;
    }
}
unsigned char convHEX(const char *str)
{
    return getdigit(str[0]) * 16 + getdigit(str[1]);
}