UNPKG

jslib-tools

Version:

js工具库 封装常用的工具函数 如深拷贝 时间转换日期格式化、浏览器判断等,提高开发效率

143 lines (136 loc) 3.27 kB
/* * @Author: zhangyu * @Email: zhangdulin@outlook.com * @Date: 2021-06-18 09:14:05 * @LastEditors: zhangyu * @LastEditTime: 2021-06-25 14:52:35 * @Description: */ /** * @description: 转换文件大小 B=>KB * @param {*} bytes B * @return {string} String KB */ export const b2size = (bytes: any): string => { if (bytes === 0) return '0 B' const k = 1024 const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] const i = Math.floor(Math.log(bytes) / Math.log(k)) const result = parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i] return result } interface IOptions { Bit: { toByte(): number toKB(): number toMB(): number toGB(): number toTB(): number } Byte: { toBit(): number toKB(): number toMB(): number toGB(): number toTB(): number } KB: { toBit(): number toByte(): number toMB(): number toGB(): number toTB(): number } MB: { toBit(): number toByte(): number toKB(): number toGB(): number toTB(): number } GB: { toBit(): number toByte(): number toKB(): number toMB(): number toTB(): number } TB: { toBit(): number toByte(): number toKB(): number toMB(): number toGB(): number } } /**进位 */ function _carryBit(t: number, index: number): number { return t * (1024 ** (index - 1)) * 8 } /**降位 */ function _dropBit(t: number, index: number): number { return t / (1024 ** (index - 1)) / 8 } function _up(t: number, index: number): number { // return t >> (index * 10) return t / (1024 ** index) } function _down(t: number, index: number): number { // return t << (index * 10) return t * (1024 ** index) } /** * 字节转换 转换成多种格式 * @param {number} b byte */ export function bytes(target: number): IOptions { return { Bit: { toByte: () => _dropBit(target, 1), toKB: () => _dropBit(target, 2), toMB: () => _dropBit(target, 3), toGB: () => _dropBit(target, 4), toTB: () => _dropBit(target, 5), }, Byte: { toBit: () => _carryBit(target, 1), toKB: () => _up(target, 1), toMB: () => _up(target, 2), toGB: () => _up(target, 3), toTB: () => _up(target, 4), }, KB: { toBit: () => _carryBit(target, 2), toByte: () => _down(target, 1), toMB: () => _up(target, 1), toGB: () => _up(target, 2), toTB: () => _up(target, 3), }, MB: { toBit: () => _carryBit(target, 3), toByte: () => _down(target, 2), toKB: () => _down(target, 1), toGB: () => _up(target, 1), toTB: () => _up(target, 2), }, GB: { toBit: () => _carryBit(target, 4), toByte: () => _down(target, 3), toKB: () => _down(target, 2), toMB: () => _down(target, 1), toTB: () => _up(target, 1), }, TB: { toBit: () => _carryBit(target, 5), toByte: () => _down(target, 4), toKB: () => _down(target, 3), toMB: () => _down(target, 2), toGB: () => _down(target, 1), }, } } export default { b2size, bytes }