41 lines
847 B
Go
41 lines
847 B
Go
package utils
|
|
|
|
import "strconv"
|
|
|
|
func HumanSize(bytes uint64) string {
|
|
units := []string{"B", "KB", "MB", "GB", "TB", "PB"}
|
|
var unitIndex int
|
|
size := float64(bytes)
|
|
|
|
for size >= 1024 && unitIndex < len(units)-1 {
|
|
size /= 1024
|
|
unitIndex++
|
|
}
|
|
|
|
if unitIndex == 0 {
|
|
return strconv.FormatUint(bytes, 10) + units[unitIndex]
|
|
}
|
|
|
|
return strconv.FormatFloat(size, 'f', 1, 64) + units[unitIndex]
|
|
}
|
|
|
|
func HumanSizeInt(bytes int64) string {
|
|
return HumanSize(uint64(bytes))
|
|
}
|
|
|
|
func HumanDiskSize(bytes uint64) string {
|
|
units := []string{"B", "KB", "MB", "GB", "TB", "PB"}
|
|
var unitIndex int
|
|
size := float64(bytes)
|
|
|
|
for size >= 1000 && unitIndex < len(units)-1 {
|
|
size /= 1000
|
|
unitIndex++
|
|
}
|
|
|
|
if unitIndex == 0 {
|
|
return strconv.FormatUint(bytes, 10) + units[unitIndex]
|
|
}
|
|
return strconv.FormatFloat(size, 'f', 1, 64) + units[unitIndex]
|
|
}
|