mirror of
https://github.com/fofolee/uTools-quickcommand.git
synced 2025-06-08 06:16:27 +08:00
141 lines
2.7 KiB
JavaScript
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",
|
|
],
|
|
};
|