javaScript实现浮点数转十六进制字符


Posted in Javascript onOctober 29, 2013

最近一个嵌入式项目中需要WEB功能,因此想到利用HTML+JavaScript实现一些参数配置功能,参数由JavaScript生成十六进制数据,通过POST提交给单片机,然后再直接使用,以充分利用浏览器的计算能力。

由于JavaScript对浮点数的支持很弱,直接使用浮点数转十六进制功能,双不能实现平常在C语言中实现的4字节的存储表示法,通过搜索,并没有找到相关功能代码,在Node.js的Buffer类可以实现此功能,但又没办法使用(单片机存储空间有限),也没办法找到具体是如何实现的(看不太懂)。

例如:

123.456 ==》 0x42F6E979在C语言中,直接将一个浮点数转换成unsigned int再输出成十六进数就可以了,但在JavaScript中实现就不那么直接了。

有幸在网上找到了一个用C#实现的IEEE754标准的浮点数转换代码(IEEE754浮点数转换器(C#实现)点击打开链接),通过将此代码转换成JavaScript,完成了此份工作,为此,将代码贴出来,共享。

另外,我只实现了转成十六制,没有实现逆转(逆转代码)在C#代码中也有。

通过如下代码可以实现如下:
get_float_hex(123.456) ==> 42F6E979

function DecToBinTail(dec, pad) 
{ 
var bin = ""; 
var i; 
for (i = 0; i < pad; i++) 
{ 
dec *= 2; 
if (dec>= 1) 
{ 
dec -= 1; 
bin += "1"; 
} 
else 
{ 
bin += "0"; 
} 
} 
return bin; 
} 
function DecToBinHead(dec,pad) 
{ 
var bin=""; 
var i; 
for (i = 0; i < pad; i++) 
{ 
bin = (parseInt(dec % 2).toString()) + bin; 
dec /= 2; 
} 
return bin; 
} 
function get_float_hex(decString) 
{ 
var dec = decString; 
var sign; 
var signString; 
var decValue = parseFloat(Math.abs(decString)); 
if (decString.toString().charAt(0) == '-') 
{ 
sign = 1; 
signString = "1"; 
} 
else 
{ 
sign = 0; 
signString = "0"; 
} 
if (decValue==0) 
{ 
fraction = 0; 
exponent = 0; 
} 
else 
{ 
var exponent = 127; 
if (decValue>=2) 
{ 
while (decValue>=2) 
{ 
exponent++; 
decValue /= 2; 
} 
} 
else if (decValue<1) 
{ 
while (decValue < 1) 
{ 
exponent--; 
decValue *= 2; 
if (exponent ==0) 
break; 
} 
} 
if (exponent!=0) decValue-=1; else decValue /= 2; } 
var fractionString = DecToBinTail(decValue, 23); 
var exponentString = DecToBinHead(exponent, 8); 
return Right('00000000'+parseInt(signString + exponentString + fractionString, 2).toString(16),8);
Javascript 相关文章推荐
JQuery模板插件 jquery.tmpl 动态ajax扩展
Nov 10 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
Nov 14 Javascript
js中的eventType事件及其浏览器支持性介绍
Nov 29 Javascript
jQuery遍历Table应用示例
Apr 09 Javascript
javascript实现图片跟随鼠标移动效果的方法
May 13 Javascript
js实现TAB切换对应不同颜色的代码
Aug 31 Javascript
jQuery+ajax简单实现文件上传的方法
Jun 03 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
May 03 Javascript
JavaScript正则表达式和级联效果
Sep 14 Javascript
基于Vue框架vux组件库实现上拉刷新功能
Nov 28 Javascript
jQuery实现的点击图片居中放大缩小功能示例
Jan 16 jQuery
Vue中的情侣属性$dispatch和$broadcast详解
Mar 07 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
Oct 29 #Javascript
js动态设置div的值下例子
Oct 29 #Javascript
Jquery 复选框取值兼容FF和IE8(测试有效)
Oct 29 #Javascript
Js获取数组最大和最小值示例代码
Oct 29 #Javascript
js 遍历json返回的map内容示例代码
Oct 29 #Javascript
jQuery实现公告文字左右滚动的实例代码
Oct 29 #Javascript
javascript查找字符串中出现最多的字符和次数的小例子
Oct 29 #Javascript
You might like
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
jQuery 加上最后自己的验证
2009/11/04 Javascript
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
js 操作符汇总
2014/11/08 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
2016/05/16 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
举例讲解Python程序与系统shell交互的方式
2015/04/09 Python
python通过加号运算符操作列表的方法
2015/07/28 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
python简单区块链模拟详解
2019/07/03 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
Django分页功能的实现代码详解
2019/07/29 Python
python实现逻辑回归的示例
2020/10/09 Python
Django多个app urls配置代码实例
2020/11/26 Python
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
应届护士求职信范文
2014/01/26 职场文书
人事部岗位职责范本
2014/03/05 职场文书
大学军训的体会
2014/11/08 职场文书
申报优秀教师材料
2014/12/16 职场文书
海洋天堂观后感
2015/06/05 职场文书
外科护士长工作总结
2015/08/12 职场文书
css背景和边框标签实例详解
2021/05/21 HTML / CSS
Python制作动态字符画的源码
2021/08/04 Python
如何在python中实现ECDSA你知道吗
2021/11/23 Python