十进制小数转十六进制(浮点型转16进制)C语言代码+2种方法
十六进制简介
十六进制(简写为hex或下标16),在数学中是一种逢16进1的进位制。通常用0-9,a-f(或A-F)表示16个基数,即0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F表示0-15。如:十六进制数1F,F是个位数表示15,1是十位数表示1个16,那么它转换为十进制数即为31,16+15=31。16进制数是计算机中常用的进数制,比如颜色代码#FFFFFF、Unicode码U+200D等都可用16进制数表示。
十进制转十六进制原理
十进制小数转十六进制小数,整数部分方法为除十六取余再倒序,小数部分方法为乘十六取整,每次乘以相应之后基数后取结果的整数部分即可。需要注意的是并非所有的十进制小数都能完全转化为十六进制小数,这时就需要取近似值。
以1234.567为例:
拓展:十进制小数转换为其他进制小数
十进制小数转换为其他进制的方法与转换为十六进制的方法相同,十进制小数转R进制小数,整数部分方法为除R取余再倒序,小数部分方法为乘R取整,每次乘以相应之后基数后取结果的整数部分即可。需要注意的是并非所有的十进制小数都能完全转化为R进制小数,这时就需要取近似值。
C语言代码实例
方法一:
#include <stdio.h>
#include <string.h>void main()
{char integer[32]="0";char decimal[32]="0";char HEX[] = "0123456789ABCDEF";char hex[64];char hex_temp;int i,j,k = 0;double num, decimal_temp ,integer_temp = 0;printf("输入一个小数:");scanf("%lf", &num);integer_temp = num;while (integer_temp){integer[i++] = HEX[(int)integer_temp % 16]; //对十进制数求余并最终与HEX[]数组中的字符匹配integer_temp = (int)integer_temp / 16;}integer[i]='.';for(j = i - 1; j-k > 0; j--)//调换整数的16进制顺序{hex_temp = integer[j];integer[j] = integer[k++];integer[i-j-1] = hex_temp;}decimal_temp = num-(int)num;for(i = 0; i < 6;i++)//保留6位有效数字{decimal_temp = decimal_temp * 16;decimal[i] = HEX[(int)decimal_temp];decimal_temp = decimal_temp -(int)decimal_temp;if(decimal_temp == 0) {decimal[i+1]='\0';break;}}strcpy(hex,integer);strcat(hex,decimal);puts(hex);
}
验证:在线进制转换工具
方法二:
#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{char out[20]="0";char out1[20]="0";double temp;double data;int integer=0,i=0;double decimal=0;printf("输入一个小数:");scanf("%lf",&data);integer = (int)data;decimal = data - integer;for(i = 0; i < 10;i++){decimal = decimal*16;sprintf(out1+i,"%X",(int)decimal);temp = decimal -(int)decimal;decimal=temp;if(temp == 0) {out1[i+1]='\0';break;}}sprintf(out,"%X.",integer);strcat(out,out1);printf("out=%s\n",out);return 0;
}
验证:在线进制转换工具
IEEE 754标准格式方式存储的浮点转HEX:
符点数(小数)转十六进制C语言代码实例+原理解释(强制类型转换+联合体转换)_xiaohai@Linux的博客-CSDN博客
十进制小数转十六进制(浮点型转16进制)C语言代码+2种方法相关推荐
- python中文转16进制_Python 16进制与中文相互转换的实现方法
Python中编码问题:u'\xe6\x97\xa0\xe5\x90\x8d' 类型的转为utf-8的解决办法 相信小伙伴们遇到过类似这样的问题,python2中各种头疼的转码,类似u'\xe6\x9 ...
- qt 中文转十六进制_QT中16进制字符串转汉字
最经在研究AT指令接受短信,短信是unicode编码,接受后需要根据系统的编码方案进行相关的转码 比如接受到了一串字符4F60597D,它是"你好"的unicode编码,一个uni ...
- C#下2\10\16进制互转代码总汇
1.十进制转换其他:Convert.ToString(十进制数字, 2|8|16进制模式) //十进制转二进制 Convert.ToString(69, 2); //十进制转八进制 Convert.T ...
- c语言115写成16进制,C语言指针问题
C语言指针问题 來源:互聯網 2009-04-01 16:01:29 評論 分類: 電腦/網絡 >> 程序設計 >> 其他編程語言 問題描述: int a=115,*p;p ...
- 把16进制转换为ascii字符c语言,ASCII转16进制C语言
满意答案 u2gseftj278 推荐于 2016.03.01 采纳率:56% 等级:11 已帮助:14340人 以前引别人的,自己懒得再写了呵呵.原理就是这样的,你可以直接用的 //函 数 名 ...
- java 16进制数组 字符串_byte数组转换成16进制字符串和字符数组的方法
byte数组转换成16进制字符串String: public class CommonUtil { /** * byte数组转换成16进制字符串 * @param src * @return */ p ...
- C# 中关于汉字与16进制转换的代码
/// <summary> /// 从汉字转换到16进制 /// </summary> /// <param name="s" ...
- c语言 乱码转化为16进制_C语言版的16进制与字符串互转函数
http://www.cnblogs.com/nio-nio/p/3309367.html /* // C prototype : void StrToHex(BYTE *pbDest, BYTE * ...
- c语言ascii码字符串转16进制,ASCII转16进制C语言
满意答案 露露JJA 推荐于 2017.11.26 采纳率:59% 等级:7 已帮助:710人 以前引别人的,自己懒得再写了呵呵.原理就是这样的,你可以直接用的 //函 数 名:AscToHex ...
最新文章
- 浅谈(线性)卷积公式为什么要翻转
- Linux下oracle 9i图文安装二
- 3D模型“换皮肤”有多简单?也就一句话的事
- 深圳当代艺术家的一次聚会
- 设置了li(float:right),里面的li反过来显示 - 解决办法
- c# DataTable DataBinding 应用笔记
- MySQL SQL 优化命令行问题 SQL 抓取方式
- STM32 DMA传输
- 最小化安装虚拟机(建立母盘和快照)
- javascript开发HTML5游戏--斗地主(单机模式part1)
- 机器学习之K-means算法:深入浅出K-Means算法
- 基于深度学习的视觉 SLAM 综述
- 网上鞋店html,“鞋店”是“shoes store”还是“shoe store”?
- zabbix+snmp+Granfana监控打印机
- LaTeX---字符操作
- python3+selenium实现126邮箱登陆并发送带附件的邮件(显示等待版本)
- 开源或免费虚拟主机管理系统
- 【错误解决】Spring JPA的错误及其解决方案
- NetBeans 打开/保存具有指定编码的文件插件
- 用python语言绘制美丽图形