js方法:字节转换
1,字节各转换单位如下
1字节(Byte) = 8位(bit)
1KB( KB,千字节) = 1024B
1MB( MB,兆字节) = 1024K
1GB( GB,吉字节,千兆) = 1024MB
1TB( TB,万亿字节,太字节) = 1024G
2,转换如下
1,第一种方式:--------------------------------------------
const filterSize = (size) => {
if (!size) return ''
if (size < pow1024(1)) return size + ' B'
if (size < pow1024(2)) return (size / pow1024(1)).toFixed(2) + ' KB'
if (size < pow1024(3)) return (size / pow1024(2)).toFixed(2) + ' MB'
if (size < pow1024(4)) return (size / pow1024(3)).toFixed(2) + ' GB'
return (size / pow1024(4)).toFixed(2) + ' TB'
}
求次幂
num = 1 代表 1024
num = 2 代表 1024*1024
num = 3 代表 1024*1024*1024 依次类推
function pow1024(num) {
return Math.pow(1024, num)
}
2,第二种方式--------------------------------------------
// toFixed(2) 四舍五入 2是保留的小数
const formatSize = (limit) => {
if (!limit || Number(limit) == 0) return ''
limit = Number(limit)
// 将size B转换成 M
var size = ''
if (limit < 1 * 1024) {
//小于1KB,则转化成B
size = limit.toFixed(2) + 'B'
} else if (limit < 1 * 1024 * 1024) {
//小于1MB,则转化成KB
size = (limit / 1024).toFixed(2) + 'KB'
} else if (limit < 1 * 1024 * 1024 * 1024) {
//小于1GB,则转化成MB
size = (limit / (1024 * 1024)).toFixed(2) + 'MB'
} else {
//其他转化成GB
size = (limit / (1024 * 1024 * 1024)).toFixed(2) + 'GB'
}
var sizeStr = size + '' //转成字符串
var index = sizeStr.indexOf('.') //获取小数点处的索引
var dou = sizeStr.substr(index + 1, 2) //获取小数点后两位的值
if (dou == '00') {
//判断后两位是否为00,如果是则删除00
return sizeStr.substring(0, index) + sizeStr.substr(index + 3, 2)
}
return size
}