
花开花落为您分享以下优质知识
在Javascript中,将数值或字符串转换为二进制的方法主要有以下四种,涵盖常用场景和底层实现:
一、数值转二进制(推荐方法)
最简洁的方式,直接将数字转换为二进制字符串。 ```javascript
let num = 13;
console.log(num.toString(2)); // 输出: "1101"
```
适用于正整数和负整数,负数会返回二进制补码表示。
位操作实现
通过循环取余和移位操作手动转换,适合理解底层原理。 ```javascript
function decimalToBinary(decimal) {
let binaryString = "";
while (decimal >
0) {
binaryString = (decimal % 2) + binaryString;
decimal = Math.floor(decimal / 2);
}
return binaryString || "0";
}
console.log(decimalToBinary(5)); // 输出: "101"
```
二、字符串转二进制
字符编码转换
通过 `charCodeAt` 获取字符的ASCII码,再转换为二进制字符串。 ```javascript
let str = "A";
console.log(str.charCodeAt().toString(2)); // 输出: "1010001"
```
适用于单个字符转换,需注意处理多字节字符时可能产生意外结果。
使用 `TextEncoder` API
将字符串转换为 `Uint8Array`,适合处理多语言字符或二进制数据传输。 ```javascript
const encoder = new TextEncoder();
const binaryArray = encoder.encode("要转换为二进制的字符串");
console.log(binaryArray); // 输出: Uint8Array [101, 101, 108, 108, 111]
```
三、其他进制转换
通用方法:
`parseInt(string, radix)` 可将任意进制字符串转换为十进制,反之亦然。 ```javascript
console.log(parseInt("52", 8)); // 输出: 42(八进制转十进制)
```
四、注意事项
负数转换:`toString(2)` 返回二进制补码,位操作方法同样适用。- 多字节字符:直接使用 `toString(2)` 可能导致乱码,需结合 `TextEncoder` 处理。