code: func HumanBytes(bytes float64, si bool) string {
  	var base = 1024
  	pre := []string{"K", "M", "G", "T", "P", "E"}
  	var post = "B"
  	if si {
  		base = 1000
  		pre = []string{"k", "M", "G", "T", "P", "E"}
  		post = "iB"
  	}
  	if bytes < float64(base) {
  		return fmt.Sprintf("%.2f B", bytes)
  	}
  	exp := int(math.Log(bytes) / math.Log(float64(base)))
  	index := exp - 1
  	units := pre[index] + post
  	return fmt.Sprintf("%.2f %s", bytes/math.Pow(float64(base), float64(exp)), units)
  }
docs: // HumanBytes formats bytes as a human readable string