gpt4 book ai didi

c - 如何将 uint8_t 显示为整数或字符串?

转载 作者:行者123 更新时间:2023-11-30 14:48:18 26 4
gpt4 key购买 nike

我正在尝试一个将十进制数转换为二进制数的函数,我想看看它是否有效。问题是我正在用 C 语言为 Teensy 微 Controller 编写它,并且我没有很多像 printf 这样的基本操作。我正在使用的库只能以字符串或 double 形式将信息发送到液晶屏,因此我检查此函数是否正常工作的唯一方法是将二进制数作为字符串或整数发送到液晶屏(如果二进制数数字是 1010,整数将是 1010,而不是 10)。

我可以使用的库是:

stdint
stdio
avr/io
avr/interrupt
util/delay
stdlib

有谁知道如何仅使用上述库来完成此操作?

编辑:根据评论请求包含代码。我用来将十进制转换为二进制的代码是:

uint8_t dec_to_bin(void){
int n = 100;
long long binaryNumber = 0;
int remainder, i = 1;

while (n!=0){
remainder = n%2;
n /= 2;
binaryNumber += remainder*i;
i *= 10;
}
return binaryNumber;
}

然后在主函数中我有:

uint8_t a = dec_to_bin();
sprintf(a, "%u");

这将返回错误:错误:传递“sprintf”的参数 1 使指针来自整数而不进行强制转换

最佳答案

sprintf 的定义是

int sprintf ( char * str, const char * format, ... );

因此,如果您想将数字转换为字符串(这就是 sprintf 所做的),您必须给它一个 char 数组来放置字符串:

char output[9];
uint32_t a = dec_to_bin(100);

sprintf(output, "%08lu", a);

这应该可以解决您的编译错误。

第二个问题是你的 dec_to_bin 函数。返回值与您返回的值不匹配。

uint32_t dec_to_bin( uint32_t n ){

uint32_t binaryNumber = 0;
uint32_t remainder, i = 1;

//prevent overflow
if ( n > 255) {
return 0;
}

while (n!=0){
remainder = n%2;
n /= 2;
binaryNumber += remainder*i;
i *= 10;
}
return binaryNumber;
}

关于c - 如何将 uint8_t 显示为整数或字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50500328/

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