前言

 有时我们在编写ESP8266程序的时候,库函数提供的sprintf()函数不能将浮点型数据转为字符串。或者在编写内存较小的单片机时,使用sprintf()等库函数会占用较大的代码空间,这时我们就需要自己写一些占用内存较小的函数实现浮点型或整形转字符串的功能。

函数实现

整形转字符串
 整形转字符串也就是将整形数据的每位数取出来,然后将每位数加上字符’0’,转换结束后加上字符串结束符’\0’,即可将整形数转化为字符串。如需要将1365转化为字符串即,将1365对10连续求余,结果为0则结束求余。那么1365可以求4次余,第一次为1,则将1加上字符’0’,求第5次的时候结果为0,则1365的位数就是4,5-1即为整形数的位数。代码实现如下所示:

/*** @brief 整形数据转化到字符串* @param date  需要转换成字符串的整形数据* @param buffer  存放转换数据的字符串*/
void int2string(int date,char* buffer)
{int temp=0,absdate=0,i=0,j=0;if(date>0)//判断是否大于0{buffer[0] = '+';absdate=date;}else if(date==0)//如果等于0{buffer[0] = '0'; buffer[1] = '\0';return ;}else//如果小于0{buffer[0] = '-';absdate = -date;}temp = absdate;//取整数部分for(i=0;temp!=0;i++)//计算整数部分的位数temp /=10;temp = absdate;//取整数部分for(j=i;j>0;j--)//将整数部分转换成字符串型{if(date>=0) buffer[j-1] = temp%10+'0';else buffer[j] = temp%10+'0';temp /=10;}if(date>=0) buffer[i] = '\0';//加上字符串结束符else buffer[i+1] = '\0';
}

浮点型转字符串
 浮点型转字符串原理和整形转字符串原理差不多,刚开始需要把浮点型数据的整数部分取出来进行转换,最后再根据对小数点精确的位数进行四舍五入,比如对1.23进行四舍五入的话就是((int)(12.3+0.5)/10.0,相当于将12.8强制转换为整形后结果1然后除以10结果为1.2,即为四舍五入后的结构。具体实现函数如下所示。

/*** @brief 浮点型数据转化到字符串* @param slope  浮点型数据* @param buffer  字符串* @param n  小数点后几位*/
void float2string(float slope,char* buffer,int n)
{int temp,i,j;int x=0;float absslope=0;if(slope>=0)//判断是否大于0{absslope = slope;buffer[0] = '+';}else if(slope==0){buffer[0] = '0'; buffer[1] = '\0';return ;}else{buffer[0] = '-';absslope = -slope;}temp = (int)absslope;//取整数部分for(i=0;temp!=0;i++)//计算整数部分的位数temp /=10;temp =(int)absslope;for(j=i;j>0;j--)//将整数部分转换成字符串型{if(slope>=0) buffer[j-1] = temp%10+'0';else buffer[j] = temp%10+'0';temp /=10;}if(slope>=0) {x=i+1;buffer[i] = '.';}else{x=i+2;buffer[i+1] = '.';}absslope -=(int)absslope;for(i=x;i<x+n;i++)//将小数部分转换成字符串型{absslope*=10;if(i==x+n-1){absslope+=0.5;}buffer[i]=(int)absslope+'0';absslope-=(int)absslope;}buffer[x+n] = '\0';
}

浮点型/整型转字符串相关推荐

  1. php 将整数改成字符串,php怎么将整型转为字符串

    php中整型转为字符串的方法:1.使用强制类型转换,在要转换的整型变量之前加上用括号括起来的目标类型"(string)"即可:2.使用strval()函数,语法格式"st ...

  2. java整形怎么转字符串型_java整型与字符串互转

    JAVA的整型与字符串相互转换 1字串 String 转换成整数 int 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt( ...

  3. [转载] Java 中字符串转整型和整型转字符串

    参考链接: Java中的字符串到整数– parseInt() Java 中字符串转整型和整型转字符串 1.字符串转整型Java代码,字符串为纯数字的情况下,调用Integer的静态方法parseInt ...

  4. 乐鑫esp8266学习rtos3.0笔记第3篇: 一篇文章带你搞掂存储技术 NVS 的认识和使用,如何利用NVS保存整型、字符串、数组以及结构体。(附带demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个" ...

  5. C++11 整型转字符串

    在C++11中增加了string的字符串以及整数之间的转换函数 标准增加了全局函数. std::to_string std::stoi std::stol std::stoll 用来将整型转换为字符串 ...

  6. vc2015/2010整型转字符串-字符串转整型 vc++

    CString str; str.Format(_T("%d"),number1);//整型转字符串 AfxMessageBox(d); CString str="222 ...

  7. 关于整型转字符串的三种方法

    首先声明,我写博客很大程度是为了记录和分享我的编程之路,如果后来人是在百度上面搜到我的文章,动机不是为了知识本身,而是为了应付题目的话,我话摆在这里,借鉴可以,但是一定要转化成自己的知识,不要只抄,然 ...

  8. java整型转字符串_java整型与字符串互转

    JAVA的整型与字符串相互转换 1字串 String 转换成整数 int 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt( ...

  9. 整型转字符串(C语言)

    整型转字符串实现(C语言) second60 20180529 #include <stdio.h> // n <2的32次数,所以最大10位 // n 可能为负数,也可能为正数 v ...

最新文章

  1. 面试题: mysql数据库 已看1 简单的sql练习
  2. 网页请求复制为curl,然后导入postman调用
  3. Linux socket 网络编程常用函数总结
  4. 大数据技术下 分布式数据库何去何从?
  5. Unity通过鼠标操作来控制场景视角(包括旋转、平移以及缩放)
  6. 笔记-项目成本管理-制定预算的步骤与原则
  7. 【CCS2018】SDN跨应用中毒攻击
  8. python 实现对地图的点击_python使用folium库绘制地图点击框
  9. 社群产品定位三种方式
  10. php capistrano,使用Capistrano 做自动化部署(适合所有语言所有框架)视频课程
  11. F1-Score相关概念
  12. 基于51单片机的医院银行排队叫号系统proteus仿真程序原理图设计
  13. 【读书笔记】金字塔原理-呈现金字塔
  14. POJ-3744 Scout YYF I 概率DP
  15. 求解旋转图像的最大内接矩形
  16. vue脚手架安装很慢_vue-cli3脚手架安装
  17. 首金奥运健儿杨倩,获得金牌和奖金缴纳个税吗?雅戈尔赠送她一套房,交税吗?
  18. C++程序设计:考研路茫茫——早起看书
  19. python成绩分析器_Python-根据成绩分析是否继续深造
  20. 基础篇. ARM架构和处理器(3)

热门文章

  1. 产培必看|腾讯产品经理亲身说法:我在腾讯做产品
  2. win10安装PyPy踩的坑(第三方库)
  3. linux系统更改计算机名称,如何在Linux中设置或更改主机名
  4. 72小时学会任何一款软件
  5. 代码世界里的那些令人喷饭的注释
  6. 线性代数学习之线性相关,线性无关与生成空间
  7. 加载演员维度表和电影维度表
  8. verilog串口没有C语言灵活,用verilog写的串口转并口程序
  9. 微众银行年营收270亿:净利69亿 利润碾压网商银行
  10. 输入起始日期,截止日期,查询天数