我正在尝试以DateTime
以下格式将当前连接到我的设备 Mac 地址:aa:bb:cc:dd:ee:ffYYmmDDhhMMss
所以我可以在每次收集新数据时对其进行哈希处理并将其发送到 Web 服务(因此我必须在每个循环中对其进行哈希处理)
我设法连接两个值(mac地址+日期时间)并将其转换为char
数组
addressDateTime.toCharArray(thisThing, 28);
但是,对于如何继续,我有点迷茫。
我也尝试阅读char*
这个循环的结果,但我不明白为什么它不起作用:
void loop() {
while (!timeClient.update()) {
timeClient.forceUpdate();
}
String addressDateTime = getPayload(); //this gets the *aa:bb:cc:dd:ee:ffYYmmDDhhMMss* string
char* hashThis;
addressDateTime.toCharArray(hashThis, 28);
for (int i = 0; i < sizeof(hashThis); i++) {
char str[3];
sprintf(str, "%02x", hashThis[i]);
Serial.print(str);
}
delay(5000);
}
我是否正确转换String
为char*
?
我应该如何去散列char*
?
或者我可以散列字符串而不将其转换为char*
?
更新:
我的代码看起来像这样
while (!timeClient.update()) {
timeClient.forceUpdate();
}
String addressDateTime = getPayload();
char hashThis[30];
addressDateTime.toCharArray(hashThis, 30);
for (int i = 0; i < sizeof(hashThis); i++) {
Serial.printf("%02x", hashThis[i]);
}
delay(5000);
}
所以我设法将其转换String
为Char*
除了输出看起来像这样33433a37313a42463a31443a34323a463431393035303531343038323700
而不是(例如)aa:bb:cc:dd:ee:ff190505141037
在弄清楚为什么我的char*
数组输出像这样之后,我仍然需要对其进行哈希处理。
感谢您帮助我走到这一步,我还有很长的路要走