欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > javascript进制之间转换、异或运算(适用与微信小程序)

javascript进制之间转换、异或运算(适用与微信小程序)

2025/4/26 12:24:23 来源:https://blog.csdn.net/qq_43258522/article/details/142141662  浏览:    关键词:javascript进制之间转换、异或运算(适用与微信小程序)

十进制数组转成以空格隔开的十六进制字符串

[1,2,3,4,5] => ‘01 02 03 04 05’

const decArrayToHexStr = (array) => {var hexStr = ""for(var i = 0; i < array.length; i++) {var str = array[i].toString(16).toUpperCase();if (str.length < 2) {str = "0" + str}hexStr = hexStr + str + " "}return hexStr.substr(0, hexStr.length - 1)
}

以空格隔开的十六进制字符串转为十进制数组

‘01 02 03 04 05’ ==> [1, 2, 3, 4, 5]

const hexStrToDecArray = (str) => {var strArray = str.split(" ")var decArray = []for(var i = 0; i < strArray.length; i++) {decArray.push(parseInt(strArray[i], 16))}return decArray
}

二进制字符串转十六进制

const 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=[]if((str.length % 4) !== 0){let a = "0000"let b=a.substring(0,4-str.length%4)str = b.concat(str)}while (str.length > 4) {list.push(str.substring(0, 4))str = str.substring(4);}list.push(str)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}}}return value
}

十六进制字符串转二进制

const 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}}}return value
}

异或运算

const ExclusiveOR = (a, b) => {let A = hex_to_bin(a)let B = hex_to_bin(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)}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)}}// 上面的2进制转16进制方法return bin_to_hex(d)
}

希望能够帮大家!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词