我正在使用Arduino
进行学校项目,我以前没有使用C++
的经验,我想为每个芯片生成唯一的MAC Address
。现在,我已经构建了一个函数,该函数创建一个包含唯一char
的二维MAC
数组。它返回如下内容:
// 2D char array example:
char mac[6][2] = {{'A', 'B'}, {'4', 'D'}, {'F', '5'}, {'C', '9'}, {'B', '7'}, {'F', '2'}};
我想将其转换为如下形式:
// Hex array example:
byte mac[6] = {0xAB, 0x4D, 0xF5, 0xC9, 0xB7, 0xF2};
重要说明:Arduino不支持STL
,因此我需要一个不使用它的实现。
如何获得此结果?
这不是this question的副本。
答案 0 :(得分:2)
byte HexCharToByte(char c) {
if (c >= '0' && c <= '9') {
return c - '0';
} else if (c >= 'A' && c <= 'F') {
return c - 'A' + 10;
} else if (c >= 'a' && c <= 'f') {
return c - 'a' + 10;
}
}
void TransformMac(char input[6][2], byte output[6]) {
for (int i = 0; i < 6; ++i) {
output[i] = (HexCharToByte(input[i][0]) << 4) | HexCharToByte(input[i][1]);
}
}