// 以1000作为基数
func ByteCountSI(b int64) string {
const unit =1000if b < unit {return fmt.Sprintf("%d B", b)}
div, exp := int64(unit), 0for n := b / unit; n >= unit; n /= unit {
div *= unit
exp++
}return fmt.Sprintf("%.1f %cB",
float64(b)/float64(div), "kMGTPE"[exp])}
// 以1024作为基数
func ByteCountIEC(b int64) string {
const unit =1024if b < unit {return fmt.Sprintf("%d B", b)}
div, exp := int64(unit), 0for n := b / unit; n >= unit; n /= unit {
div *= unit
exp++
}return fmt.Sprintf("%.1f %cB",
float64(b)/float64(div), "KMGTPE"[exp])}