您的位置:首页 > Web前端 > JavaScript

JS封装的几个位操作函数和16进制操作函数

2015-08-06 13:46 701 查看

位操作

//获取某位的值
function getBit(val,bit){
/*1 return true; 0 return false*/
return ((val & (0x1 << bit)) >> bit)==1;
}
//设置位
function setBit(val,bit){
return val | (0x1 << bit)
}
//清除位
function clearBit(val,bit){
var a=255;
for(var i=0;i<=bit;i++){
a=a<<1;
if(i>0)a++;
}
return val & a;
}
//翻转
function reverseBit(val,bit){
if(getBit(val,bit)) return clearBit(val,bit);
else return setBit(val,bit);
}


进制操作

//十进制转16进制操作
var a = 10;
b = a.toString(16);

//补0,如:padNumber(3,2) 返回:03
function padNumber(num, fill) {
var len = ('' + num).length;
return (Array(
fill > len ? fill - len + 1 || 0 : 0
).join(0) + num);
}

//可以把带符号数转为整数
function hexToInt(hex) {
if (hex.length % 2 !== 0) {
hex = "0" + hex;
}
var num = parseInt(hex, 16);
var maxVal = Math.pow(2, hex.length / 2 * 8);
if (num > maxVal / 2 - 1) {
num = num - maxVal;
}
return num;
}
/*16进制字符串 每2个字符用一个空格隔开*/
function hexArarryAddSpace(str) {
var result = '';
for (var i = 0; i < str.length; i += 2) {
if (result !== '') result += ' ';
result += str[i] + str[i + 1];
}
return result;
}

/**
字符串转十六进制字符串数组
示例:strToHexStrArray("ebcca2d87c21d65596a3cf304f47add2",2)
返回:["eb", "cc", "a2", "d8", "7c", "21", "d6", "55", "96", "a3", "cf", "30", "4f", "47", "ad", "d2"]
*/
function strToHexStrArray(str, split_len) {
var array = strToHexArray(str, split_len);
return arrToHexStrArray(array);
}
/*十进制数组转十六进制数组*/
function arrToHexStrArray(array) {
var result = [];
for (var i = 0; i < array.length; i++) {
if (typeof (array[i]) == 'undefined') {
console.error('要转为16进制字符串的数组异常,array,i', array, i);
continue;
}
var temp = array[i].toString(16);
if (temp.length == 1) temp = "0" + temp;
result.push(temp);
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: