为什么要单独写个方法去做不同进制之间的转换呢?因为自带的方法在进行十六进制转为二进制的时候,精度在13位字符后就会出现丢失,为了让精度不丢失就自己根据16进制转换2进制的原理写了两个方法

如果长度没有超过13位,可以用parseInt("125adf8",16).toString(2)='1001001011010110111111000',

十六进制转换二进制  (本次转换的方法没有考虑带小数点的情况)

function hex_to_bin(str) {let hex_array = [{key:0,val:"0000"},{key:1,val:"0001"},{key:2,val:"0010"},{key:3,val:"0011"},{key:4,val:"0100"},{key:5,val:"0101"},{key:6,val:"0110"},{key:7,val:"0111"},{key:8,val:"1000"},{key:9,val:"1001"},{key:'a',val:"1010"},{key:'b',val:"1011"},{key:'c',val:"1100"},{key:'d',val:"1101"},{key:'e',val:"1110"},{key:'f',val:"1111"}]let value=""for(let i=0;i<str.length;i++){for(let j=0;j<hex_array.length;j++){if(str.charAt(i).toLowerCase()== hex_array[j].key){value = value.concat(hex_array[j].val)break}}}console.log(value)return value}

二进制转十六进制    (本次转换的方法没有考虑带小数点的情况)

function bin_to_hex(str) {let hex_array = [{key:0,val:"0000"},{key:1,val:"0001"},{key:2,val:"0010"},{key:3,val:"0011"},{key:4,val:"0100"},{key:5,val:"0101"},{key:6,val:"0110"},{key:7,val:"0111"},{key:8,val:"1000"},{key:9,val:"1001"},{key:'a',val:"1010"},{key:'b',val:"1011"},{key:'c',val:"1100"},{key:'d',val:"1101"},{key:'e',val:"1110"},{key:'f',val:"1111"}]let value = ''let list=[]console.log(str)if(str.length%4!==0){let a = "0000"let b=a.substring(0,4-str.length%4)str = b.concat(str)}console.log(str)while (str.length > 4) {list.push(str.substring(0, 4))str = str.substring(4);}list.push(str)console.log(list)for(let i=0;i<list.length;i++){for(let j=0;j<hex_array.length;j++){if(list[i]==hex_array[j].val){value = value.concat(hex_array[j].key)break}}}console.log(value)return value}

异或运算 (需要上面两个方法做基础)

function xor(a ,b){let A = hex_to_bin(a)let B = hex_to_bin(b)console.log(a+"   a的二进制:"+A)console.log(b+"   b的二进制:"+B)let o = "00000000000000000000000000000000000"if(A.toString().length > B.toString().length){let c = A.toString().length - B.toString().lengthB = o.substr(0,c).concat(B)}else if(A.toString().length < B.toString().length){let c = B.toString().length - A.toString().lengthA = o.substr(0,c).concat(A)}console.log('B:'+B)console.log('A:'+A)let d = ""for(let i=0;i<A.toString().length;i++){if(A.toString()[i]==B.toString()[i]){let q="0"d = d.concat(q)}else{let p="1"d = d.concat(p)}}console.log(bin_to_hex(d))return bin_to_hex(d)}

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/lixiwoaini/article/details/82179094

js 十六进制转换二进制 二进制转十六进制 异或算法相关推荐

  1. Shell 十六进制转换成二进制的方案

    十六进制转换成二进制的方案 代码如下: #/bin/bash Hex2Bin(){     local string=$1     if [[ -z $string ]]; then          ...

  2. 二进制十进制十六进制转换_二进制数制到十进制数制的转换

    二进制十进制十六进制转换 Prerequisite: Number systems 先决条件: 数字系统 To convert binary number to its respective deci ...

  3. python十六进制转换成二进制流

    1.python自带IDE编辑器十六进制格式转换 (1) def Binary(a):result=''t='\\x'i=0if len(a)%2==1:return 0print('长度值')whi ...

  4. python十六进制转换成二进制_python - 将十六进制转换为二进制

    python - 将十六进制转换为二进制 我有ABC123EFFF. 我想拥有001010101111000001001000111110111111111111(即二进制代表,例如42位数和前导零) ...

  5. 进制转换(二进制、八进制、十进制、十六进制)超详细版

    今天来总结一下各种进制转换问题,详细齐全易于理解,希望对你有帮助哦! 各种进制之间的相互转换 先从我们最熟悉的十进制入手吧,其他进制与十进制的转换方法都是一样的. 整型有4种进制形式: 1.十进制: ...

  6. 二进制、十进制、八进制、十六进制转换

    这是一节"前不着村后不着店"的课.不同进制之间的转换纯粹是数学上的计算.不过,你不必担心会有么复杂,无非是乘或除的计算. 生活中其实很多地方的计数方法都多少有点不同进制的影子. 比 ...

  7. 【笔记】二进制八进制十进制十六进制互转详细教程和范例

    最近复习之前的笔记基础.又把进制转换理解了一遍.放在这里以后备查.同时作为分享. 二进制转换八进制十进制十六进制 例: 11010 二进制转换八进制 需要2进制数字为每3位分组的十进制数,不足3位的倍 ...

  8. 计算机专升本基础笔记二 进制转换及二进制运算规则

    进制转换及二进制运算规则   什么是进制?     进制就是进位计数制,是人为定义的带进位的计数方法.我们的时间就是六十进制(满60秒进一分钟,满60分钟进1小时):对于任何一种进制-X进制,就表示每 ...

  9. 二、八、十、十六进制转换(图解篇)

    各种进制的用途 10进制,当然是便于我们人类来使用,我们从小的习惯就是使用十进制,这个毋庸置疑. 2进制,是供计算机使用的,1,0代表开和关,有和无,机器只认识2进制. 16进制,内存地址空间是用16 ...

  10. 【进制转换】二进制,十进制,八进制,16进制

    1.二进制与十进制相互转换 二进制转为十进制 0000 0110转换为10进制: (二进制里面没有"个位.十位.百位",只能通过从左到右或者从右到左第几位来描述), 从右往左开始, ...

最新文章

  1. EASYPHP安装完Apache工作正常后,配置MYSQL的问题
  2. 人脸相关2020eccv
  3. Server Core十大安装设置命令
  4. 前台线程和后台线程(Foreground and Background Threads)
  5. python鼠标碰撞_获取鼠标指针测试item之间的碰撞
  6. python is not allowed to run_【无法解决】PySpider的部署运行而非调试界面上RUN运行
  7. 如何通过VC的 CHttpFile 抓取网页内容
  8. 财务人员福音,财务收支报告模板
  9. 维纳滤波python 函数_Python中离焦图像的维纳滤波
  10. Postman写接口文档
  11. GD32F103学习笔记(2)——在GD32F103移植STM32F103代码
  12. Pubwin EP 正式版完整安装全程-数据备份
  13. 分水岭算法(学习笔记)
  14. 使用kindlegen转换工具将电子书epub到mobi格式时遇到错误(prcgen):E24010:超链接:display:none
  15. 【stm32c8t6+esp8266上传温湿度到Onenet云平台】
  16. 人口只有北京的 1/3,这个国家创立了全球一半的科技公司
  17. 外星人就在月球背面--读书笔记
  18. matlab gui 画点,请教matlab GUI画图的问题
  19. webpack 搭建ts环境
  20. Calendar 取上一年,上个月日期

热门文章

  1. JS 去除数组A中包含数组B中的元素(即:获取A数组中不包含B数组的元素)
  2. APP与后台通信数据格式的演进:从文本协议到二进制协议
  3. android Vibrator 使用
  4. teleport ultra php,Teleport Ultra/Teleport Pro的冗余代码批量清理方法
  5. Qt调用C++动态链接库--导出类
  6. Uncaught SyntaxError: Unexpected token n in JSON at position 1 at JSON.parse (<anonymous>)
  7. HP惠普服务器驱动下载地址_php_sir_新浪博客
  8. 丫丫头-玲珑塔设计教程
  9. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not?
  10. python的ppt报告_python可以写PPT吗