将字节数转换成用户可读的格式_2
Jun 20, 2016 pm 12:27 PM
=Start=
接上篇「 将字节数转换成用户可读的格式」,上篇文章主要是使用Linux下已有的工具(numfmt,需要 GNU coreutils >= 8.21)进行转换,但是我记录这篇文章的最初目的是自己编码实现相关功能(比如写成一个alias/function放在.bashrc中方便日常使用),这篇文章的内容就是介绍通过各种编程语言来实现该功能。
参考解答:
1.awk/gawk
# OKecho "12454162221" | awk ' BEGIN { split("B,KB,MB,GB,TB", Units, ","); } { u = 1; while ($1 >= 1024) { $1 = $1 / 1024; u += 1 } $1 = sprintf("%.2f %s", $1, Units[u]); print $0; }' # OKecho "12454162221" | gawk 'BEGIN { split("KMGTPEZY",suff,//)}{ match($0,/([0-9]+)/,bits) sz=bits[1]+0 i=0; while ((sz>1024)&&(i<length(suff))) { sz/=1024;i++ } if (i) printf("%.3f %siB\n",sz,suff[i]) else printf("%3i B\n",sz)}' # OKecho "12454162221" | awk '{ xin=$1; if(xin==0) { print "0 B"; } else { x=(xin<0?-xin:xin); s=(xin<0?-1:1); split("B KiB MiB GiB TiB PiB",type); for(i=5;y < 1;i--) { y=x/(2^(10*i)); } print y*s " " type[i+2]; };}'
2.Perl
echo "12454162221" | perl -ne 'if (/^(\d+)/){$l=log($1+.1);$m=int($l/log(1024)); printf("%6.1f\t%s\n",($1/(2**(10*$m))),("K","M","G","T","P")[$m-1]);}' # 最大以G为单位echo "12454162221" | perl -pe 's{([0-9]+)}{sprintf "%.1f%s", $1>=2**30? ($1/2**30, "G"): $1>=2**20? ($1/2**20, "M"): $1>=2**10? ($1/2**10, "K"): ($1, "")}e'
3.Python
defbytes_format(filesize, unit=1024): unit = float(unit) for countin ['Bytes','KB','MB','GB', 'TB', 'PB']: if 0 < filesize < unit: return '{0:.3f} {1}'.format(filesize, count) filesize /= unit printbytes_format(12454162221)
4.PHP
<?php function bytes_format($numbers, $bytesize = 1024) { $readable = array("", "KB", "MB", "GB", "TB", "PB"); $index = 0; while($numbers > $bytesize){ $numbers /= $bytesize; $index++; } return("".round($numbers, 2)." ".$readable[$index]);}echobytes_format(12454162221) . "\n";echobytes_format(124541622210) . "\n";echobytes_format(1245416222100) . "\n";
参考链接:
- http://unix.stackexchange.com/questions/44040/a-standard-tool-to-convert-a-byte-count-into-human-kib-mib-etc-like-du-ls1
- http://stackoverflow.com/questions/15854332/file-size-in-human-readable-format
- http://www.kossboss.com/linux—bytes-to-human-readable-command
- http://ram.kossboss.com/humanbytesawk/
- http://ram.kossboss.com/linux-bytes-to-human-readable-command/
- http://superuser.com/questions/553976/how-to-display-the-size-in-human-readable-format-in-the-find-command/554027#554027
- http://serverfault.com/questions/62411/how-can-i-sort-du-h-output-by-size
- http://codesnippets.fesslersoft.de/format-bytes-to-human-readable-size/
- http://www.developerfeed.com/how-convert-bytes-human-readable-string-format-php/
- http://www.ivankristianto.com/tips-convert-your-numbers-to-human-readable-format/
=END=

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

11 skrip pemendek URL terbaik PHP (percuma dan premium)

Bekerja dengan Data Sesi Flash di Laravel

Respons HTTP yang dipermudahkan dalam ujian Laravel

Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST

12 skrip sembang php terbaik di codecanyon
