2025-01-05 23:14:52 +08:00

141 lines
2.7 KiB
JavaScript

// 创建 Buffer
function from(data, encoding = "utf8") {
try {
return Buffer.from(data, encoding);
} catch (error) {
throw new Error(`创建Buffer失败: ${error.message}`);
}
}
// 转换为字符串
function toString(buffer, encoding = "utf8", start = 0, end = buffer.length) {
try {
return buffer.toString(encoding, start, end);
} catch (error) {
throw new Error(`转换字符串失败: ${error.message}`);
}
}
// 写入数据
function write(
buffer,
string,
offset = 0,
length = buffer.length,
encoding = "utf8"
) {
try {
return buffer.write(string, offset, length, encoding);
} catch (error) {
throw new Error(`写入数据失败: ${error.message}`);
}
}
// 填充数据
function fill(
buffer,
value,
offset = 0,
end = buffer.length,
encoding = "utf8"
) {
try {
return buffer.fill(value, offset, end, encoding);
} catch (error) {
throw new Error(`填充数据失败: ${error.message}`);
}
}
// 复制数据
function copy(
source,
target,
targetStart = 0,
sourceStart = 0,
sourceEnd = source.length
) {
try {
return source.copy(target, targetStart, sourceStart, sourceEnd);
} catch (error) {
throw new Error(`复制数据失败: ${error.message}`);
}
}
// 比较数据
function compare(buf1, buf2) {
try {
return Buffer.compare(buf1, buf2);
} catch (error) {
throw new Error(`比较数据失败: ${error.message}`);
}
}
// 连接 Buffer
function concat(buffers, totalLength) {
try {
return Buffer.concat(buffers, totalLength);
} catch (error) {
throw new Error(`连接Buffer失败: ${error.message}`);
}
}
// 查找数据
function indexOf(buffer, value, byteOffset = 0, encoding = "utf8") {
try {
return buffer.indexOf(value, byteOffset, encoding);
} catch (error) {
throw new Error(`查找数据失败: ${error.message}`);
}
}
// 切片数据
function slice(buffer, start = 0, end = buffer.length) {
try {
return buffer.slice(start, end);
} catch (error) {
throw new Error(`切片数据失败: ${error.message}`);
}
}
// 交换字节序
function swap(buffer, size) {
try {
switch (size) {
case 16:
return buffer.swap16();
case 32:
return buffer.swap32();
case 64:
return buffer.swap64();
default:
throw new Error("不支持的字节大小");
}
} catch (error) {
throw new Error(`交换字节序失败: ${error.message}`);
}
}
module.exports = {
from,
toString,
write,
fill,
copy,
compare,
concat,
indexOf,
slice,
swap,
// 编码类型
encodings: [
"utf8",
"utf16le",
"latin1",
"base64",
"hex",
"ascii",
"binary",
"ucs2",
],
};