utils.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package common
  2. import (
  3. "bytes"
  4. "confrontation-training/constant"
  5. "encoding/binary"
  6. "encoding/hex"
  7. "fmt"
  8. "github.com/google/uuid"
  9. "log"
  10. "os"
  11. "path/filepath"
  12. "strings"
  13. )
  14. // GenerateUUID 生成UUID
  15. func GenerateUUID() string {
  16. UUID, err := uuid.NewRandom()
  17. if err != nil {
  18. _ = fmt.Sprintf("UUID generate err:%s", err.Error())
  19. return ""
  20. }
  21. return strings.Replace(UUID.String(), "-", "", -1)
  22. }
  23. // CheckFile 检查文件扩展名
  24. func CheckFile(fileName string) string {
  25. fileNames := []string{"json", "txt", "wav", "npy", "xlsx", "xls"}
  26. for _, temp := range fileNames {
  27. if strings.HasSuffix(strings.ToLower(fileName), temp) {
  28. return temp
  29. }
  30. }
  31. return ""
  32. }
  33. // GetCurrentAbPathByExecutable 获取当前执行程序所在的绝对路径
  34. func GetCurrentAbPathByExecutable() string {
  35. exePath, err := os.Executable()
  36. if err != nil {
  37. log.Fatal(err)
  38. }
  39. res, _ := filepath.EvalSymlinks(filepath.Dir(exePath))
  40. return res
  41. }
  42. func Int2Bytes(i int) [4]byte {
  43. var result [4]byte
  44. result[0] = byte(i >> 24 & 0xFF)
  45. result[1] = byte(i >> 16 & 0xFF)
  46. result[2] = byte(i >> 8 & 0xFF)
  47. result[3] = byte(i & 0xFF)
  48. return result
  49. }
  50. func Bytes2HexStr(bytes [4]byte) string {
  51. var result string
  52. for _, value := range bytes {
  53. if &value == nil {
  54. result = ""
  55. break
  56. }
  57. result = fmt.Sprint(result, value&0xFF)
  58. }
  59. return result
  60. }
  61. // GenerateHexStringCmdPlaceHolder 生成名称占位符
  62. func GenerateHexStringCmdPlaceHolder(length int) string {
  63. if length <= 0 {
  64. return ""
  65. }
  66. if length%2 != 0 {
  67. fmt.Println("占位符个数为奇数")
  68. }
  69. var sb strings.Builder
  70. for i := 0; i < length; i++ {
  71. sb.WriteString(constant.DefaultPlaceHolder)
  72. }
  73. return sb.String()
  74. }
  75. func Int2Byte(i int64) string {
  76. bytesBuffer := bytes.NewBuffer([]byte{})
  77. err := binary.Write(bytesBuffer, binary.BigEndian, i)
  78. if err != nil {
  79. fmt.Println("数据转换异常:" + err.Error())
  80. return ""
  81. }
  82. return hex.EncodeToString(bytesBuffer.Bytes())
  83. }