# 如何在JavaScript中將二進制轉換為十六進制
## 引言
在編程中,數字系統的轉換是一項常見任務。二進制(基數為2)和十六進制(基數為16)是兩種廣泛使用的數字表示方法。二進制適合機器處理,而十六進制因其簡潔性(1位十六進制對應4位二進制)常被用于簡化二進制表示。本文將詳細介紹在JavaScript中實現二進制到十六進制轉換的多種方法。
---
## 方法一:使用`parseInt()`和`toString()`
### 核心步驟
1. **二進制字符串轉十進制**
使用`parseInt(binaryString, 2)`將二進制字符串解析為十進制整數。
```javascript
const binary = '11010110';
const decimal = parseInt(binary, 2); // 214
decimal.toString(16)將十進制數轉換為十六進制字符串。
const hex = decimal.toString(16); // 'd6'
function binaryToHex(binaryString) {
const decimal = parseInt(binaryString, 2);
return decimal.toString(16);
}
console.log(binaryToHex('11010110')); // 輸出: "d6"
0和1)。.toUpperCase()。補全位數
確保二進制字符串長度為4的倍數(十六進制每4位對應1位)。
while (binaryString.length % 4 !== 0) {
binaryString = '0' + binaryString;
}
分段轉換
每4位二進制轉換為1位十六進制:
const binaryToHexMap = {
'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'
};
function binaryToHexManual(binaryString) {
// 補全位數
while (binaryString.length % 4 !== 0) {
binaryString = '0' + binaryString;
}
let hexResult = '';
for (let i = 0; i < binaryString.length; i += 4) {
const chunk = binaryString.substr(i, 4);
hexResult += binaryToHexMap[chunk];
}
return hexResult;
}
console.log(binaryToHexManual('11010110')); // 輸出: "d6"
BigInt處理大數當二進制字符串超過Number.MAX_SAFE_INTEGER(53位)時,parseInt會丟失精度,此時需使用BigInt。
function binaryToHexBigInt(binaryString) {
const decimalBigInt = BigInt('0b' + binaryString);
return decimalBigInt.toString(16);
}
console.log(binaryToHexBigInt('11111111111111111111111111111111')); // 輸出: "ffffffff"
padStart優化若需固定位數(如8位十六進制),可使用padStart補零:
function binaryToHexPadded(binaryString, length = 8) {
const decimal = parseInt(binaryString, 2);
return decimal.toString(16).padStart(length, '0');
}
console.log(binaryToHexPadded('11010110', 4)); // 輸出: "00d6"
| 方法 | 優點 | 缺點 |
|---|---|---|
parseInt+toString |
代碼簡潔,適合大多數場景 | 大數精度丟失 |
| 手動轉換 | 無精度問題,可控性強 | 代碼復雜度高 |
BigInt |
支持超大數 | ES6+環境要求 |
推薦選擇:
- 常規場景:方法一(parseInt)。
- 大數處理:方法三(BigInt)。
- 教學/底層理解:方法二(手動實現)。
添加驗證邏輯:
if (!/^[01]+$/.test(binaryString)) {
throw new Error('Invalid binary string');
}
JavaScript默認輸出小寫,可通過.toUpperCase()轉換:
hexResult.toUpperCase(); // "D6"
使用parseInt(hexString, 16)和toString(2):
const hex = 'd6';
const binary = parseInt(hex, 16).toString(2); // "11010110"
通過本文的多種方法,您可以根據需求靈活選擇最適合的二進制到十六進制轉換方案。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。