sysmonitord/internal/config/utils.go
wuko233 6cecd69758 [scanner] 实现哈希计算策略
[config] 实现配置转换
2026-03-30 17:19:42 +08:00

47 lines
904 B
Go

package config
import (
"fmt"
"regexp"
"strconv"
"strings"
)
func ParseSize(sizeStr string) (int64, error) {
sizeStr = strings.TrimSpace(sizeStr)
if sizeStr == "" {
return 0, nil
}
// 正则匹配:数字 + 单位
re := regexp.MustCompile(`(?i)^(\d+)\s*([KMGT]?B?)$`)
matches := re.FindStringSubmatch(sizeStr)
if len(matches) != 3 {
return 0, fmt.Errorf("无效的大小格式: %s", sizeStr)
}
value, err := strconv.ParseInt(matches[1], 10, 64)
if err != nil {
return 0, err
}
unit := strings.ToUpper(matches[2])
var multiplier int64 = 1
switch unit {
case "B", "":
multiplier = 1
case "KB", "K":
multiplier = 1024
case "MB", "M":
multiplier = 1024 * 1024
case "GB", "G":
multiplier = 1024 * 1024 * 1024
case "TB", "T":
multiplier = 1024 * 1024 * 1024 * 1024
default:
return 0, fmt.Errorf("未知的单位: %s", unit)
}
return value * multiplier, nil
}