📅  最后修改于: 2023-12-03 15:16:10.554000             🧑  作者: Mango
在编程中,常常需要把十六进制数转成二进制数,这在计算机底层操作中也经常会遇到。在 JavaScript 中,可以用几种方法实现这个转换。
JavaScript 内置的 Number 类型有一个 toString() 方法,可以把数字按指定进制转成字符串。例如,下面的代码可以把数字 255 转成二进制字符串。
let num = 255;
let binaryStr = num.toString(2);
console.log(binaryStr); // 输出 "11111111"
这里的参数 2 表示要把数字转成二进制,如果要用其他进制可以相应的修改。这个方法是很简单的,但是并不能直接接受十六进制字符串作为参数。
把十六进制转成二进制的方法很简单,只需要依次把每个十六进制数转成四位二进制数就可以了。下面的代码展示了一个实现。
function hexToBinary(hexStr) {
let binaryStr = '';
for (let i = 0; i < hexStr.length; i++) {
let hexDigit = parseInt(hexStr[i], 16);
binaryStr += hexDigit.toString(2).padStart(4, '0');
}
return binaryStr;
}
console.log(hexToBinary('FF')); // 输出 "11111111"
console.log(hexToBinary('AB')); // 输出 "10101011"
这个方法比较麻烦,需要手动处理每个位。但是优点是可以直接接收十六进制字符串作为参数。
JavaScript 中内置了一个类型 Uint8Array,它可以把字节流转成数值数组。如果把一个十六进制字符串转成 Uint8Array 数组后,就可以直接把它转成二进制字符串。下面的代码展示了一个实现。
function hexToBinary(hexStr) {
let uint8Array = new Uint8Array(hexStr.match(/.{1,2}/g).map(byte => parseInt(byte, 16)));
let binaryArr = Array.from(uint8Array).map(byte => byte.toString(2).padStart(8, '0'));
return binaryArr.join('');
}
console.log(hexToBinary('FF')); // 输出 "11111111"
console.log(hexToBinary('AB')); // 输出 "10101011"
这个方法比较高效,可以直接把十六进制字符串转成二进制字符串,但是代码比较复杂,需要用到正则表达式和 Array.from() 方法。
这篇文章介绍了三种不同的方法把十六进制字符串转成二进制字符串。其中,toString() 方法最简单,手动转换方法最容易理解,而 Uint8Array 方法最高效。根据实际需要选择合适的方法即可。