gpt4 book ai didi

将整数 char[] 转换为十六进制 char[] avr 微 Controller

转载 作者:太空宇宙 更新时间:2023-11-04 05:51:28 25 4
gpt4 key购买 nike

我正在寻找转换这种类型的输入变量:

char var[] = "9876543210000"

到一个等价的十六进制字符

char hex[] = "08FB8FD98210"

我可以通过例如以下代码::

long long int freq;
char hex[12];
freq = strtoll(var,NULL,10);
sprintf(hex, "%llX",freq);

但是我是在 avr 微 Controller 上执行此操作,因此 strtoll 仅 strtol (avr-libgcc) 不可用。所以我被限制为 32 位整数,这是不够的。有什么想法吗?

最好的问候西蒙

最佳答案

是的....这个方法只适用于正数,所以如果你有一个负号,在下一步之前保存它。只需将字符串编号分成两半,假设您选择每组六位,以获得两个十进制数:u_int32_t left_part;u_int32_t right_part; 用你的数字的两半....你可以构造你的 64 位数字如下:

u_int64_t number = (u_int64_t) left_part * 1000000 + right_part;

如果你在打印端有同样的问题,就是不能打印32位十六进制数,你可以直接得到left_part = number >> 32;right_part = number & 0xffffffff; 最后打印两个:

if (left_part) printf("%x%08x", left_part, right_part);
else printf("%x", right_part);

测试使得结果在小于0x100000000时不强制为8位。

关于将整数 char[] 转换为十六进制 char[] avr 微 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40594997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com