Arduino:将 uint64_t 转换为字符串

新手上路,请多包涵

我有一个能够转换为 uint64_t 的二进制文件。它很大,所以我真的需要一个 uint64_t。我无法将其转换为 char 数组。我可以在一个独立的项目中做到这一点,但不能在 Arduino

我遇到的一些障碍:

  • 我不能使用 sprintf (“%llu”) :它给我的结果是 0 并且进一步的谷歌搜索表明它没有真正实现
  • 我不能使用 itoa :是的,itoa 正在为较小的数字工作,但我正在处理一个 uint64_t ,它似乎达到了它的极限并给了我一个否定的结果
  • 我不能使用 String(123456789) :我可以将它用于其他类型,如 int 和 long,但我不能传入 uint64_t,因为参数不支持它
  • 我不能使用 long long :搜索它只会给我一个 uint64_t 的变体(例如,使用 sprintf)
  • 我在 Visual Studio 中使用 VC 包含时遇到问题:当我转到我的 项目属性 > 配置属性 > C/C++ > 常规 > 附加包含目录 并添加路径 “C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\“ Visual Studio 将其删除。

非常感谢任何输入。

原文由 John 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

假设您想以 HEX 打印“数字”:

   uint64_t number;
  unsigned long long1 = (unsigned long)((number & 0xFFFF0000) >> 16 );
  unsigned long long2 = (unsigned long)((number & 0x0000FFFF));

  String hex = String(long1, HEX) + String(long2, HEX); // six octets

原文由 Amir Samakar 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题