尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

利用sprintf与snprintf巧妙实现数值变量转换为字符串型

利用sprintf与snprintf巧妙实现数值变量转换为字符串型
📅 发布时间:2026/6/18 23:58:07

0.前情提要

这是在搞STM32开发时遇到的一个问题,要将数字通过串口发送给上位机,但是HAL库中的HAL_UART_Transmit函数只接受uint8_t *类型的参数,因此我们需要通过一个函数先将数值类型变量转换为char *字符串,再强制类型转换为uint8_t *类型的数组。经过上网查询,我发现sprintf函数与snprintf函数可以方便的解决这个问题。

1.直!接!来!吧!

该函数的原型为int sprintf(char *dest, const char *format, ...);,其中*dest为格式化字符串的缓冲区,*format为格式化字符串(后面的参数用法和printf函数几乎一样,可以理解为该函数就让是printf函数原本输出到屏幕上的内容输出到*dest中。)
示例代码:

点击查看代码
char* intToString(int num) {static char buffer[20]; // 静态数组,足够存储32位整数snprintf(buffer, sizeof(buffer), "%d", num);return buffer;
}

该方法有可能输出内容太长导致缓冲区溢出,不过对于一般的应用场景来说足够用了。
为了防止这种状态的发生,可以使用snprintf()函数,该函数的原型为int snprintf ( char * str, size_t size, const char * format, ... );,其中size参数为要写入的字符的最大数目。如果格式化后的字符串长度超过了size-1,则snprintf()只会写入size-1个字符,并在字符串的末尾添加一个空字符(\0)以表示字符串的结束。
这两个函数的返回值规则是一样的:

  • 如果成功,返回将要写入的字符数(不包括结尾的空字符),即使这个值大于size。
  • 如果发生编码错误,返回负值。

先写这么多吧我要睡了明天怎么还有早八高数啊啊啊啊啊

相关新闻

  • Helmholtz-Gibbs自由能与熵弹性
  • Rust 的验证码图像识别系统设计与实现
  • ROIR 2023

最新新闻

  • 成都洁净室装修公司 厂房无尘车间改造通风施工 - 洁净室推广助手
  • 基于MCP48xx DAC与运放的高精度双极性电压输出系统设计
  • 嵌入式系统内存与显示控制:DRAM/LCD控制器寄存器配置与优化
  • 宁波GEO优化服务商评测:全域运营实力对比 - 起跑123
  • AI模型版本传闻的真相:如何识别V4烟雾弹与提取真实信号
  • 2026优选宁波AI推广公司 多维度排名推荐解析 - 起跑123

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号