我对 C++ 很陌生,我想将 Long 变量转换为 char 数组,然后打印每个变量。
我需要转换才能在此函数上使用它modem.write(c);
c 变量是 char。我的变量是long GMT = now.unixtime();
所以我想我需要首先将GMT转换为字符数组,然后在for循环中调用modem.write
?
编辑0:
在与 H2CO3 讨论后,他向我解释说 modem.write 实际上需要 uint8_t 并且值需要是 ASCII 代码,因此在发送数据之前应该进行更详细的过程。
编辑1:
while(Serial.available()){
char c = Serial.read();
modem.write(c);
}
long GMT = now.unixtime();
char* newCode = totp.getCode(GMT);
编辑2:
char* buf;
snprintf(buf, sizeof buf, "%ld", GMT);
modem.write(buf);
错误:从“char”到“uint8_t”的转换无效*
最佳答案
免责声明:我对任何 arduino SDK 都不太了解,所以这只是在我根据你的问题做出的所有假设下,用普通 C 语言实现这一点的一种可能的非常通用的方法。使用某种 arduino SDK 可能有更好的方法。
另外,正如已经指出的那样,modem.write 要么接受一个字符,要么接受一个字节数组和一个 size_t 参数,所以我将这个答案留在这里,以便人们学习一些不一定提供最好的东西回答这个问题,但它本身仍然是正确的(在规定的假设下)
<小时/>假设 modem.write(...) 确实采用 \0
终止的 char 数组,而不是 C++ 字符串,这将是在 c: 中执行此操作的可能方法:
char *c = malloc(sizeof(long) + 1);
if (!c) {
// handle ENOMEM
}
strncpy(c, (const char *)&GMT, 4);
c[sizeof(long)] = '\0';
关于c++ - Long 变量到 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19349507/