查了很多,很少有人写这个的,偶尔找到的代码也有各种问题,要么是特殊情况算错,要么是速度太慢(速度大概是我这个的5%),遂自己写一个,目前应该是全网不要钱的博客里速度最快了吧,如果还有别的优化建议,欢迎交流学习!

目录

前言

浮点数

单精度与十六进制

float 转 hex:

hex 转 float:

双精度与十六进制

double 转 hex

hex 转 double

整数

32位整数与十六进制

integer 转 hex:

hex 转 integer:

8位整数与十六进制

byte 转 hex:

hex 转 byte:


前言

/*
*
*   JavaScript之字节跳动
*   作者:楚轩
*   作者邮箱:418740992@qq.com
*   作者B站:楚轩bibilili
*   欢迎交流学习~
*
*   简介:(float类型,double类型,integer类型,byte类型)与内存中bit位之间的转换;
*   基本符合 IEEE754 标准,但不区分 ±0;
*   经过本人的不断压榨,现在这组函数拥有:
*   无与伦比的速度,几乎是全网第一;
*   小巧的体积,简短精美;
*   依然可能存在bug;
*
*   [**]运算符需要 ES7 环境,如果环境不支持需要手动改成 Math.pow();
*   xxx_to_hex 的参数是 Number,返回的是十六进制 String;
*   hex_to_xxx 的参数是 Number,返回的是 Number;
*
*   tips:hex 在实际使用中会分 MSB或者 LSB,需要特别注意;
*
*   需要注释请联系作者o(o・`з・´o)ノ!!!
*
*/

下面是代码

浮点数

单精度与十六进制

float 转 hex:

function float_to_hex(float) {let S, E, M, HEX;if (isNaN(float)) {return "7fc0000";}S = float >= 0 ? 0 : 1;E = Math.floor(Math.log((float >= 0 ? float : -float)) / Math.LN2) + 127;E = (E >= 0xff) ? 0xff : (E < 0) ? 0 : E;M = (E >= 0xff) ? 0 : Math.round((1 << 23) * (Math.sign(float) * float / (2 ** (E - 127 + !E)) - !!E));HEX = (((S << 31) | (E << 23) | M) >>> 0).toString(16);while (HEX.length < 8) {HEX = "0" + HEX;}return HEX;
}

hex 转 float:

function hex_to_float(hex) {let S, E, M, result;S = hex >>> 31;E = ((hex << 1) >>> 24);M = (hex << 9) >>> 9;if (E === 0xff) {if (M === 0x0) {return ((-1) ** S) * Infinity;} else {return NaN;}}result = ((-1) ** S) * (M / (1 << 23) + !!(E)) * (2 ** (E - 127 + !E));return result;
}

双精度与十六进制

double 转 hex

function double_to_hex(double) {let S, E, M, HEX, HEX1, HEX2;if (isNaN(double)) {return "7ff8000000000000";}S = double >= 0 ? 0 : 1;E = Math.floor(Math.log(double >= 0 ? double : -double) / Math.LN2) + 1023;E = (E >= 0x7ff) ? 0x7ff : (E < 0) ? 0 : E;M = (E >= 0x7ff) ? 0 : Math.round((2 ** 52) * (Math.sign(double) * double / (2 ** (E - 1023 + !E)) - !!E));HEX1 = ((S << 11) | E).toString(16);HEX2 = M.toString(16);while (HEX2.length < 13) {HEX2 = "0" + HEX2;}HEX = HEX1 + HEX2;while (HEX.length < 16) {HEX = "0" + HEX;}return HEX;
}

hex 转 double

function hex_to_double(hex) {let hex1, hexstr, S, E, M, result;hex1 = parseInt(hex / (2 ** 32));hexstr = String(hex.toString(16));while (hexstr.length < 16) {hexstr = "0" + hexstr;}S = hex1 >>> 31;E = ((hex1 << 1) >>> 21);M = parseInt(hexstr.substring(3), 16) / (2 ** 52) + !!E;if (E === 0x7ff) {if (M === 0x0) {return ((-1) ** S) * Infinity;} else {return NaN;}}result = ((-1) ** S) * M * (2 ** (E - 1023 + !E));return result;
}

整数

32位整数与十六进制

integer 转 hex:

function integer_to_hex(int) {let S, V, HEX;S = (int >>> 31) << 30;V = (int << 1) >>> 1;HEX = (S + S + V).toString(16);while (HEX.length < 8) {HEX = "0" + HEX;}return HEX;
}

hex 转 integer:

function hex_to_integer(hex) {return hex >> 0;
}

8位整数与十六进制

byte 转 hex:

function byte_to_hex(byte) {let HEX;HEX = (byte & 0xff).toString(16);return HEX.length == 1 ? "0" + HEX : HEX;
}

hex 转 byte:

function hex_to_byte(hex) {return (hex << 24) >> 24;
}

才疏学浅,如有错误,恳请指正!

Javascript之字节跳动 浮点数与十六进制互相转换 有符号整数与十六进制互相转换 速度超快相关推荐

  1. 速度超快!字节跳动开源序列推理引擎LightSeq

    机器之心发布 机器之心编辑部 这应该是业界第一款完整支持 Transformer.GPT 等多种模型高速推理的开源引擎. 2017 年 Google 提出了 Transformer [1] 模型,之后 ...

  2. python 数字转十六进制_在Python中将整数转换为十六进制

    In Python I want to tranform the integer 3892 into a hexcode with the given format and the result \x ...

  3. 字节跳动面试算法题目以及答案

    题目来源于牛客 https://www.nowcoder.com/discuss/455003?type=post&order=time&pos=&page=2&cha ...

  4. 字节跳动3月面试遇到的高频算法题

    本文汇总了牛客2021.3.1~2021.3.30 面经考到的Leetcode题目 最终的高频题榜单数据可以在CodeTop题库(https://codetop.cc)查询,支持按部门.岗位分类筛选. ...

  5. 互联网日报 | 5月21日 星期五 | 张一鸣卸任字节跳动CEO;腾讯一季度营收1353亿元;微软宣布明年停止支持IE浏览器...

    今日看点 ✦ 腾讯Q1营收1353.03亿元,微信及WeChat合并月活达12.41亿 ✦ 张一鸣宣布卸任字节跳动CEO,联合创始人梁汝波将接任 ✦ 支付宝小程序数量超300万个,"我的小程 ...

  6. 百度、字节跳动们,能否撬动在线办公市场?

    在线办公市场从来不乏新玩家. 4月27日,百度旗下在线办公品牌"百度Hi"进行了全面地升级与更名."百度Hi"更名"如流"后,其将致力于打造 ...

  7. 我不得不离开字节跳动

    来源:20社(quancaijing_20she) 作者 | 董芷菲 "在字节,别把自己当人,把自己打碎,当做好用的工具就好了." 工作了两年半之后,Tina 2020年从字节跳动 ...

  8. 字节跳动Java研发面试总结:2个星期,4轮面试,我终于拿到offer

    个人背景: 坐标背景,某211本科毕业生,计算机专业,前公司是某B站,辞职之后就重新规划了一下自己的职业方向,最终目标定在了字节跳动,比较年轻化的一家互联网公司,近几年的发展速度也比较快. 综合方面来 ...

  9. 字节跳动搞外卖,“心动”面前三道坎

    文|熔财经 作者|陈陈 字节跳动终于对外卖下手了. 近日,有消息说,字节跳动旗下抖音成立了一只外卖业务团队,拟开展一场"心动外卖"的新旅程,全力进军外卖行业.据Tech星球报道,心 ...

最新文章

  1. MVC控件类型-UrlHelper帮助类
  2. windows10下安装Linux7,win10Hyper-V下安装CentOS7
  3. Mapper动态代理开发所要遵循的四个原则
  4. 提升.NET应用程序启动速度
  5. VS2010 NDoc的插件工具
  6. 为VMware虚拟主机添加新磁盘
  7. wiki迁移方法操作步骤
  8. 转载:认识自我,把握机遇 —— 谢恩伟 (二)
  9. 使用 Shell (命令备忘)
  10. android wifi信号通道,Wifi信道分析app下载
  11. HTML 盒子模型( box-sizing: border-box)
  12. 初谈黑客破解密码的原理
  13. python输入一个英文句子、统计并输出单词数_C语言实现输入多行英文句子然后统计单词数和行数,如何输入?我的代码问题在哪里?...
  14. 什么是 Hash 算法?
  15. 美国亚马逊图片打不开
  16. ART-PI 嵌入式人形检测 附源码(RT-AK Demo)
  17. 德卡T10-F多功能读卡器|读写机外接密码小键盘在医保领域的应用与性能攻略
  18. C# Sharp问题解决:System.FormatException 输入字符串的格式不正确
  19. 电大 专科 计算机应用,2015春中央电大计算机应用基础(专科)平时作业(3)
  20. 代码注释生成:《Towards Automatically Generating Summary Comments for Java Methods》论文笔记

热门文章

  1. 《App研发录》面世
  2. radius服务器未响应,中国科学院地球环境研究所安全软件电子竞价成交公告
  3. 代码怎样review?
  4. 【C语言】《词典翻译》小程序
  5. 【12月17日更新决赛预测】用二元泊松模型预测2022年世界杯淘汰赛结果
  6. 查看google快照
  7. kettle ftp下载插件,job ftp下载执行结果源码分析
  8. 抖音seo源码开发,开源技术保姆式搭建
  9. 美的、中国电信、华为“5G+工业互联网”应用示范园区暨5G联合创新实验室成立...
  10. sql语句 创建student表 字段属性设置