Dưới đây là một nguyên mẫu để chuyển đổi một số thành một chuỗi có thể đọc được theo các tiêu chuẩn quốc tế mới.
Có hai cách để biểu thị số lớn: Bạn có thể hiển thị chúng theo bội số 1000 = 10 3 (cơ sở 10) hoặc 1024 = 2 10 (cơ sở 2). Nếu bạn chia cho 1000, bạn có thể sử dụng tên tiền tố SI, nếu bạn chia cho 1024, bạn có thể sử dụng tên tiền tố IEC. Vấn đề bắt đầu bằng cách chia cho 1024. Nhiều ứng dụng sử dụng tên tiền tố SI cho nó và một số sử dụng tên tiền tố IEC. Tình hình hiện tại là một mớ hỗn độn. Nếu bạn thấy tên tiền tố SI, bạn không biết số đó được chia cho 1000 hay 1024
https://wiki.ubfox.com/UnitsPolicy
http://en.wikipedia.org/wiki/Template:Quantities_of_bytes
Object.defineProperty(Number.prototype,'fileSize',{value:function(a,b,c,d){
return (a=a?[1e3,'k','B']:[1024,'K','iB'],b=Math,c=b.log,
d=c(this)/c(a[0])|0,this/b.pow(a[0],d)).toFixed(2)
+' '+(d?(a[1]+'MGTPEZY')[--d]+a[2]:'Bytes');
},writable:false,enumerable:false});
Hàm này không chứa loop
, và vì vậy nó có thể nhanh hơn một số hàm khác.
Sử dụng:
Tiền tố truyền thông
console.log((186457865).fileSize()); // default IEC (power 1024)
//177.82 MiB
//KiB,MiB,GiB,TiB,PiB,EiB,ZiB,YiB
Tiền tố SI
console.log((186457865).fileSize(1)); //1,true for SI (power 1000)
//186.46 MB
//kB,MB,GB,TB,PB,EB,ZB,YB
tôi đặt IEC làm mặc định vì tôi luôn sử dụng chế độ nhị phân để tính kích thước của tệp ... sử dụng sức mạnh của 1024
Nếu bạn chỉ muốn một trong số chúng trong một chức năng oneliner ngắn:
SI
function fileSizeSI(a,b,c,d,e){
return (b=Math,c=b.log,d=1e3,e=c(a)/c(d)|0,a/b.pow(d,e)).toFixed(2)
+' '+(e?'kMGTPEZY'[--e]+'B':'Bytes')
}
//kB,MB,GB,TB,PB,EB,ZB,YB
Thông tin liên lạc
function fileSizeIEC(a,b,c,d,e){
return (b=Math,c=b.log,d=1024,e=c(a)/c(d)|0,a/b.pow(d,e)).toFixed(2)
+' '+(e?'KMGTPEZY'[--e]+'iB':'Bytes')
}
//KiB,MiB,GiB,TiB,PiB,EiB,ZiB,YiB
Sử dụng:
console.log(fileSizeIEC(7412834521));
Nếu bạn có một số câu hỏi về các chức năng chỉ cần hỏi