c++ - Long 变量到 char 数组

标签 c++ c arduino

我对 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/

相关文章:

c++ - 如何将用 linux 编写的 std::wstring 读入 windows

未在 Linux 内核模块中执行的 CLI 指令

windows - 如何在 Windows 上获取我的 Arduino Sketches 的汇编语言列表?

Arduino/Attiny85 : Delay in ISR and port manipuation

c++ - 针对错误的 OpenMP 并行

c++ - 运行时的模板实例化和函数选择

c++ - 不使用 goto 语句重写程序

c - 未定义对 `GetPerformanceInfo@8' 的引用

c - 如何在没有 sudo 的情况下构建 Mongodb C 驱动程序

arduino - 使用attachInterrupt时没有匹配函数错误