下面是“javascript 十六进制及二进制转化的方法”的完整攻略。
十六进制转化为二进制
十六进制转化为二进制的方法包括以下两步:
第一步
将十六进制数转换为二进制形式,即将每个十六进制数字都用其平衡的4位二进制数来表示。例如,$A$ 的十六进制是 $1010$,则对应的二进制是 $0101\ 10$。
第二步
将二进制形式中的每一位从左到右进行反向排列,得到的就是十六进制数转换成的二进制数。例如,将 $0101\ 10$ 进行反向排列后,得到的就是 $0110\ 1010$。
以下是一个将十六进制转换为二进制的示例:
function hexToBinary(hex) {
const hex2bin = {
"0": "0000",
"1": "0001",
"2": "0010",
"3": "0011",
"4": "0100",
"5": "0101",
"6": "0110",
"7": "0111",
"8": "1000",
"9": "1001",
"A": "1010",
"B": "1011",
"C": "1100",
"D": "1101",
"E": "1110",
"F": "1111"
};
let binary = "";
for (let i = 0; i < hex.length; ++i) {
binary += hex2bin[hex[i]];
}
return binary.split("").reverse().join("");
}
console.log(hexToBinary("A7F")); // "111101111"
二进制转化为十六进制
二进制转化为十六进制的方法包括三步:
第一步
将二进制数从右向左每四位分组,不足的在前面补 $0$,例如,$111101111$ 变成 $0001\ 1110\ 1111$。
第二步
将每一组的二进制数转换为十六进制数,即将 $0001$ 转换为 $1$,将 $1110$ 转换为 $E$,将 $1111$ 转换为 $F$,得到的就是十六进制数。例如, $0001\ 1110\ 1111$ 转换为 $1EF$。
第三步
去掉前导 $0$,即得到最终的十六进制数。例如,$1EF$ 这个十六进制数就是 $111101111$ 这个二进制数转换的结果。
以下是一个将二进制转换为十六进制的示例:
function binaryToHex(binary) {
const bin2hex = {
"0000": "0",
"0001": "1",
"0010": "2",
"0011": "3",
"0100": "4",
"0101": "5",
"0110": "6",
"0111": "7",
"1000": "8",
"1001": "9",
"1010": "A",
"1011": "B",
"1100": "C",
"1101": "D",
"1110": "E",
"1111": "F"
};
binary = binary.padStart(Math.ceil(binary.length / 4) * 4, "0");
let hex = "";
let i = binary.length;
while (i > 0) {
hex = bin2hex[binary.slice(i - 4, i)] + hex;
i -= 4;
}
return hex.replace(/^0+/, "");
}
console.log(binaryToHex("111101111")); // "1EF"
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript十六进制及二进制转化的方法 - Python技术站