Arduino:将字符串数组转换为字节数组
Arduino: Convert string array to byte array
我正在做一个项目,我首先需要将有效负载构建为字符串,然后在发送有效负载时将其转换为字节。我在转换时遇到问题。
为什么负载在字符串中累积是由于它生成每个字符串的方式,“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]);
}
我正在做一个项目,我首先需要将有效负载构建为字符串,然后在发送有效负载时将其转换为字节。我在转换时遇到问题。
为什么负载在字符串中累积是由于它生成每个字符串的方式,“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]);
}