在JavaScript編程中,經(jīng)常需要將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)。這時(shí)候就可以使用JavaScript中的binl2hex函數(shù)。
binl2hex函數(shù)一般用于將不可重復(fù)信息的哈希值,如MD5等,轉(zhuǎn)換為十六進(jìn)制字符串。下面我們就來(lái)看一下binl2hex函數(shù)的具體實(shí)現(xiàn)。
function binl2hex (binarray) { var hex_tab = "0123456789abcdef"; var str = ""; for(var i = 0; i< binarray.length * 4; i++) { str += hex_tab.charAt((binarray[i>>2] >>((i%4)*8+4)) & 0xF) + hex_tab.charAt((binarray[i>>2] >>((i%4)*8 )) & 0xF); } return str; }
以上是binl2hex函數(shù)的完整代碼。函數(shù)中用到了一個(gè)16進(jìn)制字符表,將16進(jìn)制數(shù)分成0-9和a-f共16種。在循環(huán)里面,首先通過(guò)右移和位與操作獲取當(dāng)前的二進(jìn)制數(shù)據(jù),然后使用hex_tab字符表得到對(duì)應(yīng)的十六進(jìn)制字符。
下面我們來(lái)看一個(gè)具體的例子,將MD5哈希值輸出為十六進(jìn)制字符串:
var md5Hash = "2a27c67e727be03a391d2eadd94d1ac8"; var binArray = []; for(var i = 0; i< md5Hash.length; i+=2) { binArray.push(parseInt(md5Hash.substr(i, 2), 16)); } var hexStr = binl2hex(binArray); alert(hexStr);
以上代碼中,首先獲取MD5哈希值,然后將其拆成兩個(gè)字符一組,并使用parseInt將其轉(zhuǎn)換為二進(jìn)制形式。之后再將這些二進(jìn)制數(shù)據(jù)傳入binl2hex函數(shù)中,得到十六進(jìn)制字符串。
總的來(lái)說(shuō),JavaScript中的binl2hex函數(shù)非常方便實(shí)用,可以將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為十六進(jìn)制字符串,從而方便數(shù)據(jù)處理。在實(shí)際使用中,我們可以根據(jù)實(shí)際需要來(lái)修改該函數(shù),以實(shí)現(xiàn)不同的數(shù)據(jù)轉(zhuǎn)換方式。