wuid.go 851 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package utils
  2. import (
  3. "errors"
  4. "fmt"
  5. "sort"
  6. "strconv"
  7. )
  8. func CombineId(aid, bid string) string {
  9. ids := []string{aid, bid}
  10. sort.Slice(ids, func(i, j int) bool {
  11. a, _ := strconv.ParseUint(ids[i], 0, 64)
  12. b, _ := strconv.ParseUint(ids[j], 0, 64)
  13. return a < b
  14. })
  15. return fmt.Sprintf("%s_%s", ids[0], ids[1])
  16. }
  17. func CombineUserID(aid, bid int64) string {
  18. ids := []int64{aid, bid}
  19. sort.Slice(ids, func(i, j int) bool {
  20. return ids[i] < ids[j]
  21. })
  22. return fmt.Sprintf("%s%s", fmt.Sprintf("%012x", ids[0]), fmt.Sprintf("%012x", ids[1]))
  23. }
  24. func UserIdToHex(id int64) string {
  25. return fmt.Sprintf("%012x", id)
  26. }
  27. func HexToUID(hex string) (int64, error) {
  28. var originalID int
  29. _, err := fmt.Sscanf(hex, "%x", &originalID)
  30. if err != nil {
  31. return int64(originalID), errors.New("用户id回转失败")
  32. }
  33. return int64(originalID), nil
  34. }