先来个初级的
byteChange = byte => {
let size = ''
if (byte < 0.1 * 1024) { // 小于0.1KB 则转化成B
size = byte.toFixed(2) + 'B'
}
else if (byte < 0.1 * 1024 * 1024) { // 小于0.1MB 则转换成KB
size = (byte / 1024).toFixed(2) + 'KB'
}
else if (byte < 0.1 * 1024 * 1024 * 1024) { // 小于0.1GB 则转换成MB
size = (byte / (1024 * 1024)).toFixed(2) + 'MB'
}
else if (byte < 0.1 * 1024 * 1024 * 1024 * 1024) { // 小于0.1TB 则转换成GB
size = (byte / (1024 * 1024 * 1024)).toFixed(2) + 'GB'
}
else if (byte < 0.1 * 1024 * 1024 * 1024 * 1024 * 1024) { // 小于0.1PB 则转换成TB
size = (byte / (1024 * 1024 * 1024 * 1024)).toFixed(2) + 'TB'
}
else if (byte < 0.1 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024) { // 小于0.1EB 则转换成PB
size = (byte / (1024 * 1024 * 1024 * 1024 * 1024)).toFixed(2) + 'PB'
}
else if (byte < 0.1 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024) { // 小于0.1ZB 则转换成EB
size = (byte / (1024 * 1024 * 1024 * 1024 * 1024 * 1024)).toFixed(2) + 'EB'
}
else if (byte < 0.1 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024) { // 小于0.1YB 则转换成ZB
size = (byte / (1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024)).toFixed(2) + 'ZB'
}
return size
}
下面看大神级的
var byteConvert = function(bytes) {
if (isNaN(bytes)) {
return '';
}
var symbols = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
var exp = Math.floor(Math.log(bytes)/Math.log(2));
if (exp < 1) {
exp = 0;
}
var i = Math.floor(exp / 10);
bytes = bytes / Math.pow(2, 10 * i);
if (bytes.toString().length > bytes.toFixed(2).toString().length) {
bytes = bytes.toFixed(2);
}
return bytes + ' ' + symbols[i];
};
调用
byteChange(bytes);
byteConvert(bytes);