js实现byte数组
创建 Byte 数组
在 JavaScript 中,可以通过 ArrayBuffer 和 TypedArray(如 Uint8Array)来处理二进制数据。ArrayBuffer 表示固定长度的二进制数据缓冲区,而 TypedArray 提供了对缓冲区的视图。
// 创建一个长度为 4 的 ArrayBuffer
const buffer = new ArrayBuffer(4);
// 通过 Uint8Array 视图操作 buffer
const byteArray = new Uint8Array(buffer);
byteArray[0] = 0x12; // 十六进制赋值
byteArray[1] = 34; // 十进制赋值
byteArray[2] = 0xAB;
byteArray[3] = 255;
从字符串生成 Byte 数组
使用 TextEncoder 可以将字符串编码为 UTF-8 字节数组:

const encoder = new TextEncoder();
const byteArray = encoder.encode("Hello, World!");
console.log(byteArray); // Uint8Array 格式的字节数组
从 Base64 生成 Byte 数组
通过 atob 解码 Base64 字符串,再转换为字节数组:
const base64Str = "SGVsbG8sIFdvcmxkIQ==";
const binaryStr = atob(base64Str);
const byteArray = new Uint8Array(binaryStr.length);
for (let i = 0; i < binaryStr.length; i++) {
byteArray[i] = binaryStr.charCodeAt(i);
}
从十六进制字符串生成 Byte 数组
将十六进制字符串(如 "1A2B3C")转换为字节数组:

function hexToBytes(hexString) {
const bytes = new Uint8Array(hexString.length / 2);
for (let i = 0; i < bytes.length; i++) {
bytes[i] = parseInt(hexString.substr(i * 2, 2), 16);
}
return bytes;
}
const byteArray = hexToBytes("1A2B3C");
字节数组转换为其他格式
转为十六进制字符串
function bytesToHex(byteArray) {
return Array.from(byteArray)
.map(byte => byte.toString(16).padStart(2, '0'))
.join('');
}
const hexStr = bytesToHex(new Uint8Array([0x1A, 0x2B, 0x3C]));
转为 Base64
function bytesToBase64(byteArray) {
let binaryStr = '';
byteArray.forEach(byte => {
binaryStr += String.fromCharCode(byte);
});
return btoa(binaryStr);
}
const base64Str = bytesToBase64(new Uint8Array([72, 101, 108, 108, 111]));
注意事项
ArrayBuffer是只读的底层二进制数据,需要通过TypedArray或DataView操作。- 在 Node.js 环境中,可以使用
Buffer类替代Uint8Array。 - 大端序(Big-Endian)或小端序(Little-Endian)处理需使用
DataView。






