Arduino:将十六进制字符串转换为uint64或十进制字符串
发布时间:2020-12-14 05:45:44 所属栏目:Windows 来源:网络整理
导读:我想使用uint64变量将十六进制字符串(如“43a2be2a42380”)转换为十进制表示形式.我需要这个,因为我正在实现一个充当键盘的RFID阅读器,按键必须是十进制数字. 我已经看到了其他答案(convert HEX string to Decimal in arduino)并使用strtoul实现了一个解决方
我想使用uint64变量将十六进制字符串(如“43a2be2a42380”)转换为十进制表示形式.我需要这个,因为我正在实现一个充当键盘的RFID阅读器,按键必须是十进制数字.
我已经看到了其他答案(convert HEX string to Decimal in arduino)并使用strtoul实现了一个解决方案,但它只适用于32位整数,并且strtoull不可用. uint64_t res = 0; String datatosend = String("43a2be2a42380"); char charBuf[datatosend.length() + 1]; datatosend.toCharArray(charBuf,datatosend.length() + 1) ; res = strtoul(charBuf,NULL,16); 如何使用Arduino获取大十六进制字符串/字节数组的十进制数? 解决方法
你可以自己实现:
#include <stdio.h> #include <stdint.h> #include <ctype.h> uint64_t getUInt64fromHex(char const *str) { uint64_t accumulator = 0; for (size_t i = 0 ; isxdigit((unsigned char)str[i]) ; ++i) { char c = str[i]; accumulator *= 16; if (isdigit(c)) /* '0' .. '9'*/ accumulator += c - '0'; else if (isupper(c)) /* 'A' .. 'F'*/ accumulator += c - 'A' + 10; else /* 'a' .. 'f'*/ accumulator += c - 'a' + 10; } return accumulator; } int main(void) { printf("%llun",(long long unsigned)getUInt64fromHex("43a2be2a42380")); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
推荐文章
站长推荐
- 未安装Server 2012 Server Core PowerShell
- windows 无鼠标配置ip地址
- Windows 2008 R2 开启磁盘清理的方法
- celery --- celery 基础
- Windows Phone Mango – ListBox还是LongListSel
- windows – Webstorm 11中的菜单和工具栏字体大小
- 如何在Windows中远程执行脚本?
- autoreconf:在Windows上的cygwin中找不到命令
- _XP64__在OSX 10.6上为C应用程序的默认构建定义在
- windows-server-2008-r2 – Windows Server 2008
热点阅读