在Javascript中处理二进制数主要涉及二进制字面量、进制转换、位操作及二进制数据操作。以下是具体方法:
一、二进制字面量表示
使用前缀 `0b` 或 `0B` 定义二进制数,例如:
```javascript
const a = 0b10; // 十进制2
const b = 0B1011; // 十进制11
```
注意:若使用非0或1的数字,会导致语法错误。
二、进制转换方法
将数字转换为指定进制的字符串,二进制需传入参数 `2`:
```javascript
function decimalToBinary(decimal) {
return Number(decimal).toString(2);
}
console.log(decimalToBinary(5)); // 输出: "101"
```
位操作符
- 按位与 (`&`): 对应位都为1时结果为1,否则为0 ```javascript let a = 5 (0101), b = 3 (0011); console.log(a & b); // 输出: 1 (0001) ``` - 按位或 (`|`)
```javascript
console.log(a | b); // 输出: 7 (0111)
```
- 按位异或 (`^`):对应位不同则为1
```javascript
console.log(a ^ b); // 输出: 6 (0110)
```
- 按位非 (`~`):取反操作
```javascript
console.log(~a); // 输出: -6 (1010)
```
- 移位操作:左移用 `<<`,右移用 `>>`(有符号右移)
```javascript
console.log(a << 1); // 输出: 10 (01010)
console.log(a >> 1); // 输出: 2 (0010)
```
三、二进制数据操作
`ArrayBuffer` 和类型化数组
- 创建固定长度的二进制缓冲区:
```javascript
const buffer = new ArrayBuffer(8);
```
- 使用 `Int16Array`、`Uint8Array` 等类型化数组读写数据:
```javascript
const intArray = new Int16Array(buffer);
intArray = 256; // 二进制: 0000 0000 0000 0000 0000 0000 1000 0000
const uintArray = new Uint8Array(buffer);
uintArray = 255; // 二进制: 0000 0000 0000 0000 0000 0000 1111 1111
```
读写二进制数据
- 通过 `TypedArray` 直接操作内存,不可直接对 `ArrayBuffer` 进行操作。
四、字符串转二进制
将字符串转换为二进制字符串的方法:
1. 分割字符为数组,使用 `charCodeAt()` 获取ASCII码,再转换为二进制:
```javascript
function strToBinary(str) {
return [...str].map(char => char.charCodeAt(0).toString(2)).join('');
}
console.log(strToBinary("Hello")); // 输出: "01001000011001010110110001101100"
```
2. 使用 `toString(2)` 直接转换数字数组:
```javascript
const numbers = [10, 255, 128];
const binaryArray = numbers.map(num => num.toString(2));
console.log(binaryArray); // 输出: ["1010", "11111111", "10000000"]
```