STM32【十进制-十六进制转换】无需for循环等复杂函数

这篇具有很好参考价值的文章主要介绍了STM32【十进制-十六进制转换】无需for循环等复杂函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前做项目用到这个功能,也把网上的许多例程都跑了一遍,看到一些复杂的函数也是很头疼,一些方法都是需要用sprintf来操作,但在这里并不适用,最后小鱼君询问chatgpt直接解决问题。

任务

由于用到了DWIN串口屏,所以需要将一个三位数的十进制变量转化为十六进制去输出。举个例子,如果我要在屏幕上显示46.1,那么我需要发送的数据就是(HEX)461,这个很容易就能解决,但是问题总是多变的,首先用过强制转换,未果,其次用过定义外置函数,未果。最后求助chatgpt多次后得出了结果。
废话不说直接看代码:

代码

#include <stdio.h>

int main() {
    int decimal = 461; // 要转换的十进制数值
    unsigned char hex[3]; // 存放转换结果的十六进制数值数组

    // 将十进制数值转换成十六进制数值
    hex[0] = decimal % 16; // 个位数
    decimal /= 16;
    hex[1] = decimal % 16; // 十位数
    decimal /= 16;
    hex[2] = decimal % 16; // 百位数

    // 输出转换结果
    printf("%X,0x%02X\n", hex[2], hex[1]*16+hex[0]);

    return 0;
}

输出解释

这里唯一需要解释的就是最后的输出,还是用一个例子说明:
stm32十进制转16进制,stm32,单片机,嵌入式硬件
在这里我们可以看到461转换十六进制后是1CD,那么我来考考大家,这里串口发送出去时候是0X01 0XCD呢?还是0X1C 0X0D呢?起初小鱼君也没有搞明白,但是经过多次调试后可以清楚的看到结果是0X01,0XCD屏幕才会显示。文章来源地址https://www.toymoban.com/news/detail-619909.html

到了这里,关于STM32【十进制-十六进制转换】无需for循环等复杂函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32串口自定义协议接收一串十六进制数据(将其中两个字节转化为十进制数据)+部分串口基础知识

    位(bit): 二进制数中的一个数位,可以是0或者1,是计算机中数据的最小单位。 字节(Byte): 计算机中数据的基本单位,每8位组成一个字节。各种信息在计算机中存储、处理至少需要一个字节。 例如,一个ASCII码用一个字节表示,一个汉字用两个字节表示。 字(Word):

    2023年04月08日
    浏览(58)
  • 进制转换—包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细

    目录 1.进制转换必备知识:         1.1 二进制逢2进1         8进制逢8进1           10进制逢10进1        16进制逢16进1         1.2为了区分二、八、十、十六进制,我们通常在数字后面加字母进行区分 2. 二进制与八进制、十六进制相互转换         2.1 二进制转

    2023年04月23日
    浏览(94)
  • 【进制转换】— 包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细

    目录 1.进制转换必备知识:         1.1 二进制逢2进1         8进制逢8进1           10进制逢10进1        16进制逢16进1         1.2为了区分二、八、十、十六进制,我们通常在数字后面加字母进行区分 2. 二进制与八进制、十六进制相互转换         2.1 二进制转

    2024年02月05日
    浏览(256)
  • 字符串string转换长整型int(八进制、十进制、十六进制)

    strtoul() 是C语言标准库中用于将字符串转换成无符号长整数的函数。它的完整原型如下: 其中, nptr 代表要被转换成无符号长整数的字符串; endptr 是一个指向字符指针的指针,该指针指向已经转换了的最后一个字符的下一个位置; base 指定要采用的进制,范围是2 ~ 36。 该函

    2024年02月07日
    浏览(52)
  • 数据结构:使用顺序栈的基本操作,实现十进制转为二进制,十六进制的转换

    使用系统环境: 1:win10,使用工具dev 2:使用系统win10 3:参考书籍数据结构(C语言版——严蔚敏 吴伟民) ( 注意:此文章默认,学习者拥有一定的数据机构栈,C语言的知识,书籍第20页,2.1算法的代码进行一个简化。)

    2024年02月05日
    浏览(64)
  • Qt将十二位整形十进制转换成十六进制,在转为ascii字符,并下发串口。在接受端完整还原这个十二位的十进制数。

    可以按照以下步骤进行操作: 将十进制数123456789012转换成十六进制字符串: 其中, %1 表示替换第1个参数, 0 表示输出的最小位数为0, 16 表示输出的进制为16, ull 表示无符号长长整型。 2. 将十六进制字符串转换成ASCII字符:

    2024年02月05日
    浏览(53)
  • python实现十六进制转十进制

    先来看下十六进制的定义以及表示方式,以下是百度百科上的解释: 十六进制 (简写为 hex 或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F表示10~15,这些称作

    2023年04月19日
    浏览(47)
  • C语言:十进制与十六进制的转化

    要将十进制数转换为十六进制数, 可以使用以下步骤: 1. 将十进制数除以 16,得到商和余数。 2. 用余数作为当前位的十六进制数位,余数可能是 0 到 15 之间的数字,分别对应 0 到 F。 3. 将商作为新的十进制数,并重复步骤 1 和 2,直到商为 0。 4. 将得到的十六进制数位按照

    2024年02月05日
    浏览(73)
  • 十六进制数如何转十进制 C/C++实现

    一.问题分析 我们输入一个真正意义上的十六进制数,0x开头,返回一个十进制数。 二.思路生成 输入一个十六进制的数,依次取出它的每一位,然后根据权值累加,得到10进制值。 三.问题解决及代码 以C++为例 1.如何输入一个16进制数,使用标志符hex,cinhex\\\"变量名\\\" 如果指定

    2024年02月04日
    浏览(48)
  • C语言:写一个函数,输入一个十六进制数,输出相应的十进制数

    分析:     当用户运行该程序时,程序会提示用户输入一个十六进制数。用户需要在命令行中输入一个有效的十六进制数,例如:\\\"1A3F\\\"。     接下来,程序调用了名为 xbed 的函数,并将用户输入的十六进制数作为参数传递给该函数。 在函数 xbed 中,我们定义了两个变量 i 和

    2024年02月04日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包