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 相关文章推荐
js玩一玩WSH吧
Feb 23 Javascript
QQ邮箱的一个文本编辑器代码
Mar 14 Javascript
用JavaScript仿PS里的羽化效果代码
Dec 20 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
Dec 14 Javascript
Vue.js动态添加、删除选题的实例代码
Sep 30 Javascript
JS实现搜索框文字可删除功能
Dec 28 Javascript
karma+webpack搭建vue单元测试环境的方法示例
May 24 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
Oct 19 Javascript
localstorage实现带过期时间的缓存功能
Jun 28 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
Feb 07 Javascript
vue实现从外部修改组件内部的变量的值
Jul 30 Javascript
Javascript实现关闭广告效果
Jan 29 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设计模式之调解者模式的深入解析
2013/06/13 PHP
is_uploaded_file函数引发的不能上传文件问题
2013/10/29 PHP
destoon复制新模块的方法
2014/06/21 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
python TKinter获取文本框内容的方法
2018/10/11 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
Tostadora意大利:定制T恤
2019/04/08 全球购物
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
社团活动总结格式
2014/08/29 职场文书
Python爬虫基础初探selenium
2021/05/31 Python
MongoDB 常用的crud操作语句
2021/06/20 MongoDB
Java 数据结构七大排序使用分析
2022/04/02 Java/Android