60 lines
1.7 KiB
Plaintext
60 lines
1.7 KiB
Plaintext
/**
|
||
* 将字节(Byte)转换为适当的单位(KB, MB, GB, TB)
|
||
* @param bytes 字节数
|
||
* @param decimals 小数点后位数
|
||
* @returns 格式化后的字符串
|
||
*/
|
||
export function formatBytes(bytes: number, decimals = 2): string {
|
||
if (bytes === 0) return '0 Bytes';
|
||
|
||
const k = 1024;
|
||
const dm = decimals < 0 ? 0 : decimals;
|
||
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
|
||
|
||
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
||
|
||
return (
|
||
Number.parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]
|
||
);
|
||
}
|
||
|
||
/**
|
||
* 将字节转换为千字节(KB)
|
||
* @param bytes 字节数
|
||
* @param decimals 小数点后位数
|
||
* @returns 千字节数值
|
||
*/
|
||
export function bytesToKB(bytes: number, decimals = 2): number {
|
||
return Number.parseFloat((bytes / 1024).toFixed(decimals));
|
||
}
|
||
|
||
/**
|
||
* 将字节转换为兆字节(MB)
|
||
* @param bytes 字节数
|
||
* @param decimals 小数点后位数
|
||
* @returns 兆字节数值
|
||
*/
|
||
export function bytesToMB(bytes: number, decimals = 2): number {
|
||
return Number.parseFloat((bytes / (1024 * 1024)).toFixed(decimals));
|
||
}
|
||
|
||
/**
|
||
* 将字节转换为千字节(KB)并格式化
|
||
* @param bytes 字节数
|
||
* @param decimals 小数点后位数
|
||
* @returns 格式化后的千字节字符串
|
||
*/
|
||
export function formatBytesToKB(bytes: number, decimals = 2): string {
|
||
return `${bytesToKB(bytes, decimals)} KB`;
|
||
}
|
||
|
||
/**
|
||
* 将字节转换为兆字节(MB)并格式化
|
||
* @param bytes 字节数
|
||
* @param decimals 小数点后位数
|
||
* @returns 格式化后的兆字节字符串
|
||
*/
|
||
export function formatBytesToMB(bytes: number, decimals = 2): string {
|
||
return `${bytesToMB(bytes, decimals)} MB`;
|
||
}
|