js 十六进制转换二进制 二进制转十六进制 异或算法
为什么要单独写个方法去做不同进制之间的转换呢?因为自带的方法在进行十六进制转为二进制的时候,精度在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 十六进制转换二进制 二进制转十六进制 异或算法相关推荐
- Shell 十六进制转换成二进制的方案
十六进制转换成二进制的方案 代码如下: #/bin/bash Hex2Bin(){ local string=$1 if [[ -z $string ]]; then ...
- 二进制十进制十六进制转换_二进制数制到十进制数制的转换
二进制十进制十六进制转换 Prerequisite: Number systems 先决条件: 数字系统 To convert binary number to its respective deci ...
- python十六进制转换成二进制流
1.python自带IDE编辑器十六进制格式转换 (1) def Binary(a):result=''t='\\x'i=0if len(a)%2==1:return 0print('长度值')whi ...
- python十六进制转换成二进制_python - 将十六进制转换为二进制
python - 将十六进制转换为二进制 我有ABC123EFFF. 我想拥有001010101111000001001000111110111111111111(即二进制代表,例如42位数和前导零) ...
- 进制转换(二进制、八进制、十进制、十六进制)超详细版
今天来总结一下各种进制转换问题,详细齐全易于理解,希望对你有帮助哦! 各种进制之间的相互转换 先从我们最熟悉的十进制入手吧,其他进制与十进制的转换方法都是一样的. 整型有4种进制形式: 1.十进制: ...
- 二进制、十进制、八进制、十六进制转换
这是一节"前不着村后不着店"的课.不同进制之间的转换纯粹是数学上的计算.不过,你不必担心会有么复杂,无非是乘或除的计算. 生活中其实很多地方的计数方法都多少有点不同进制的影子. 比 ...
- 【笔记】二进制八进制十进制十六进制互转详细教程和范例
最近复习之前的笔记基础.又把进制转换理解了一遍.放在这里以后备查.同时作为分享. 二进制转换八进制十进制十六进制 例: 11010 二进制转换八进制 需要2进制数字为每3位分组的十进制数,不足3位的倍 ...
- 计算机专升本基础笔记二 进制转换及二进制运算规则
进制转换及二进制运算规则 什么是进制? 进制就是进位计数制,是人为定义的带进位的计数方法.我们的时间就是六十进制(满60秒进一分钟,满60分钟进1小时):对于任何一种进制-X进制,就表示每 ...
- 二、八、十、十六进制转换(图解篇)
各种进制的用途 10进制,当然是便于我们人类来使用,我们从小的习惯就是使用十进制,这个毋庸置疑. 2进制,是供计算机使用的,1,0代表开和关,有和无,机器只认识2进制. 16进制,内存地址空间是用16 ...
- 【进制转换】二进制,十进制,八进制,16进制
1.二进制与十进制相互转换 二进制转为十进制 0000 0110转换为10进制: (二进制里面没有"个位.十位.百位",只能通过从左到右或者从右到左第几位来描述), 从右往左开始, ...
最新文章
- EASYPHP安装完Apache工作正常后,配置MYSQL的问题
- 人脸相关2020eccv
- Server Core十大安装设置命令
- 前台线程和后台线程(Foreground and Background Threads)
- python鼠标碰撞_获取鼠标指针测试item之间的碰撞
- python is not allowed to run_【无法解决】PySpider的部署运行而非调试界面上RUN运行
- 如何通过VC的 CHttpFile 抓取网页内容
- 财务人员福音,财务收支报告模板
- 维纳滤波python 函数_Python中离焦图像的维纳滤波
- Postman写接口文档
- GD32F103学习笔记(2)——在GD32F103移植STM32F103代码
- Pubwin EP 正式版完整安装全程-数据备份
- 分水岭算法(学习笔记)
- 使用kindlegen转换工具将电子书epub到mobi格式时遇到错误(prcgen):E24010:超链接:display:none
- 【stm32c8t6+esp8266上传温湿度到Onenet云平台】
- 人口只有北京的 1/3,这个国家创立了全球一半的科技公司
- 外星人就在月球背面--读书笔记
- matlab gui 画点,请教matlab GUI画图的问题
- webpack 搭建ts环境
- Calendar 取上一年,上个月日期
热门文章
- JS 去除数组A中包含数组B中的元素(即:获取A数组中不包含B数组的元素)
- APP与后台通信数据格式的演进:从文本协议到二进制协议
- android Vibrator 使用
- teleport ultra php,Teleport Ultra/Teleport Pro的冗余代码批量清理方法
- Qt调用C++动态链接库--导出类
- Uncaught SyntaxError: Unexpected token n in JSON at position 1 at JSON.parse (<anonymous>)
- HP惠普服务器驱动下载地址_php_sir_新浪博客
- 丫丫头-玲珑塔设计教程
- com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not?
- python的ppt报告_python可以写PPT吗