code: func ParseBytes(str string) (uint64, error) {
  	var sep int
  	for _, r := range str {
  		if !(unicode.IsDigit(r) || r == '.' || r == ',') {
  			break
  		}
  
  		sep = sep + 1
  	}
  
  	var f float64
  
  	if s := strings.Replace(str[:sep], ",", "", -1); len(s) > 0 {
  		var err error
  
  		f, err = strconv.ParseFloat(s, 64)
  		if err != nil {
  			return 0, err
  		}
  	}
  
  	m, err := ParseByteUnit(str[sep:])
  	if err != nil {
  		return 0, err
  	}
  
  	f = f * float64(m)
  	if f >= math.MaxUint64 {
  		return 0, errors.New("number of bytes too large")
  	}
  	return uint64(f), nil
  }
docs: // ParseBytes parses a given human-readable bytes or ibytes string into a number
  // of bytes, or an error if the string was unable to be parsed.