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 相关文章推荐
二叉树的非递归后序遍历算法实例详解
Feb 07 Javascript
JavaScript中的方法重载实例
Mar 16 Javascript
JQuery实现鼠标移动图片显示描述层的方法
Jun 25 Javascript
实例讲解jquery与json的结合
Jan 07 Javascript
AngularJs  unit-testing(单元测试)详解
Sep 02 Javascript
AngularJS 所有版本下载地址
Sep 14 Javascript
详解Vue用axios发送post请求自动set cookie
May 10 Javascript
Three.js加载外部模型的教程详解
Nov 10 Javascript
Angular实现双向折叠列表组件的示例代码
Nov 21 Javascript
详解javascript函数写法大全
Mar 25 Javascript
JS中箭头函数与this的写法和理解
Jan 14 Javascript
JavaScript异步操作中串行和并行
Nov 20 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简单封装了一些常用JS操作
2007/02/25 PHP
PHP 程序员的调试技术小结
2009/11/15 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
JavaScript实现图像模糊化的方法实例
2017/01/15 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
微信小程序如何获取用户收货地址
2018/11/27 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
python抓取网页中链接的静态图片
2018/01/29 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
python实现定时发送邮件
2020/12/23 Python
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
春季运动会广播稿大全
2014/02/19 职场文书
高考寄语大全
2014/04/08 职场文书
校园安全标语
2014/06/07 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python
5行Python代码实现一键批量扣图
2021/06/29 Python
Tomcat配置访问日志和线程数
2022/05/06 Servers
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS