Arduino:将十六进制字符串转换为uint64或十进制字符串

h3ct0r

我想使用uint64变量将十六进制字符串(例如“ 43a2be2a42380”)转换为其十进制表示形式。我需要这样做,因为我要实现一个充当键盘的RFID读取器,并且按键必须是十进制数字。

我看到了其他答案(在arduino中将HEX字符串转换为Decimal)并使用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("%llu\n", (long long unsigned)getUInt64fromHex("43a2be2a42380"));
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在arduino中将十六进制字符串转换为十进制

将字符串转换为十六进制,十进制和八进制

Python将十六进制字符串转换为十进制值

将十进制NSString转换为十六进制字符串

Spark:将十六进制字符串转换为十进制

将十六进制字符串转换为十进制整数

如何将很大的十进制字符串转换为十六进制?

使用C将十六进制字符串常量转换为十进制值

将大的十六进制字符串转换为十进制

如何将十六进制字符串转换为十进制值

将十六进制字符串转换为十进制整数

将C中的十六进制字符串转换为十进制

将十六进制字符串转换为无符号十进制值

如何将十进制转换为十六进制字符串的十六进制和XOR

PHP-将十六进制字符串转换为uint64和int64

从 jq 得到的十六进制字符串无法转换为十进制值

Python Pandas子集十六进制字符串,转换为十进制

如何在 C++ 中将十六进制转换为十进制字符串?

在Java中将64位无符号int(以十六进制字符串形式)转换为十进制

在javascript中,如何将十进制(带小数点)转换为十六进制字符串

Java通用将字节数组转换为字符串(非十六进制,十进制)

将长十六进制字符串拆分为列值并转换为十进制

C#将十六进制字符串转换为十进制。为什么是负值?

我将如何使用 js 将十进制数转换为十六进制字符串?

将字符串转换为十六进制字符

Arduino C / C ++将二进制字符串转换为十进制

将int转换为十六进制字符串

将十六进制数字转换为字符串

将十六进制转换为字符串