vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
63 lines (59 loc) • 1.36 kB
JavaScript
exports.__esModule = true;
exports.bytes = bytes;
var _b = 1;
var _kb = _b * 1024;
var _mb = _kb * 1024;
var _gb = _mb * 1024;
var _tb = _gb * 1024;
var _pb = _tb * 1024;
var unitToBytes = Object.create({
PB: _pb,
TB: _tb,
GB: _gb,
MB: _mb,
KB: _kb,
B: _b
});
var re = /^(\d+(?:\.\d+)?)(PB|TB|GB|MB|KB|B)$/;
/**
* 获取字节值。
*
* @param value 值
* @param unit 单位
*/
/**
* 获取字节值。
*
* @param value 值
*/
function bytes(value, unit) {
var bytesValue;
if (typeof value === 'string' && value.length > 0) {
var match = re.exec(value);
if (!match) {
throw new TypeError("value \u503C\u975E\u6CD5: value=" + JSON.stringify(value));
}
var v = parseFloat(match[1]);
var u = match[2];
var t = unitToBytes[u];
bytesValue = v * t;
} else if (typeof value === 'number' && isFinite(value)) {
if (unit != null) {
if (typeof unit === 'string') {
var _t = unitToBytes[unit];
if (!_t) {
throw new TypeError("unit \u503C\u975E\u6CD5: unit=" + JSON.stringify(unit));
}
bytesValue = value * _t;
} else {
throw new TypeError('unit 必须是一个字符串');
}
} else {
bytesValue = value;
}
} else {
throw new TypeError('value 必须是字符串或数字');
}
return bytesValue;
}
;