JavaScript: Convert Size In Bytes To Human Readable Format

在程式中處理檔案的時候,時常碰到的就是檔案大小的顯示。在資料庫裡通常是以 bytes 為單位做紀錄,但是顯示到畫面上,看到 479247294213 bytes 這種天文數字任誰都很難理解它到底有多大。

將天文數字轉換成普通人能夠輕易閱讀的型式很重要,所以 bytes 在畫面上要轉成 MB 或 GB 這類的型式。KB、MB、GB 之間都是 2^10 = 1024 為一個級數,所以轉換原理只要用遞迴一直除以 1024,直到小於 1024 就轉換完了。

以下這個寫法稍微特殊一點,不過原理並沒有差太多,是在找資料的時候看到的,在此留個筆記。

<script>
$(function(){
	$('span').html(bytesToSize(479247294213));
});
function bytesToSize (bytes) {
	var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
	if (bytes == 0) return 'n/a';
	var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
	return ((i == 0)? (bytes / Math.pow(1024, i))
		: (bytes / Math.pow(1024, i)).toFixed(1)) + ' ' + sizes[i];
};
</script>

把剛剛的 479247294213 bytes 代入就會轉換成 446.3 GB,這樣就容易理解多了。


Posted

in

,

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *