30 lines
587 B
Go
30 lines
587 B
Go
|
package main
|
||
|
|
||
|
import "fmt"
|
||
|
|
||
|
func ByteCountDecimal(b int64) string {
|
||
|
const unit = 1000
|
||
|
if b < unit {
|
||
|
return fmt.Sprintf("%d B", b)
|
||
|
}
|
||
|
div, exp := int64(unit), 0
|
||
|
for n := b / unit; n >= unit; n /= unit {
|
||
|
div *= unit
|
||
|
exp++
|
||
|
}
|
||
|
return fmt.Sprintf("%.1f %cB", float64(b)/float64(div), "kMGTPE"[exp])
|
||
|
}
|
||
|
|
||
|
func ByteCountBinary(b int64) string {
|
||
|
const unit = 1024
|
||
|
if b < unit {
|
||
|
return fmt.Sprintf("%d B", b)
|
||
|
}
|
||
|
div, exp := int64(unit), 0
|
||
|
for n := b / unit; n >= unit; n /= unit {
|
||
|
div *= unit
|
||
|
exp++
|
||
|
}
|
||
|
return fmt.Sprintf("%.1f %ciB", float64(b)/float64(div), "KMGTPE"[exp])
|
||
|
}
|