我有一个能够转换为 uint64_t 的二进制文件。它很大,所以我真的需要一个 uint64_t。我无法将其转换为 char 数组。我可以在一个独立的项目中做到这一点,但不能在 Arduino
假设你想用十六进制打印“number”:
strtoull 在字符串上接受可选的 0x 前缀,以及可选的初始空格和符号字符( + 或 - )。如果你想拒绝这些,你应该在调用 strtoull 之前进行测试,例如: if (!isxdigit(str[0]) || (str[1] && !isxdigit(str[1]))) 如果您还希望禁止过长的数字表示(前导零),您可以在调用 strtoull 之前检查以下条件: if (...
using namespace std; int main(int argc, char **argv) { if (argc < 2) { cerr<<"Usage: transfernum num"<<endl; return -1; } cout<<"Input Num:"<<argv[1]<<endl; unsigned long long ullNum1 = 0, ullNum2=0, ullNum3=0, ullNum4=0; ullNum1 = atoi(argv[1]); ullNum2 =...
uint64_t val = 0; for (auto ch: new_str) { if (not isdigit(ch)) return 0; val = 10 * val + (ch - '0'); } 编辑:另一个问题是溢出,如果字符串的数字大于 uint64_t。我添加了另一个开始 if 来检查字符串中的字符数。 原文由 Avizipi 发布,翻译遵循 CC BY-SA 4.0 许可协议 有...