Go - 将原始字节字符串转换为 uuid

我试图在我的程序中将原始字节字符串转换为 UUID,如下所示:


情况1:


package main


import (

    "fmt"

    "strconv"


    "github.com/google/uuid"

)


func main() {

    s := `"\220\254\0021\265\235O~\244\326\216\"\227c\245\002"`

    s2, err := strconv.Unquote(s)

    if err != nil {

        panic(err)

    }


    by := []byte(s2)

    u, err := uuid.FromBytes(by)

    if err != nil {

        panic(err)

    }

    fmt.Println(u.String())

}

输出:


90ac0231-b59d-4f7e-a4d6-8e229763a502

案例2:


package main


import (

    "fmt"

    "strconv"


    "github.com/google/uuid"

)


func main() {

    s := `"\235\273\'\021\003\261@\022\226\275o\265\322\002\211\263"`

    s2, err := strconv.Unquote(s)

    if err != nil {

        panic(err)

    }


    by := []byte(s2)

    u, err := uuid.FromBytes(by)

    if err != nil {

        panic(err)

    }

    fmt.Println(u.String())

}

输出:


panic: invalid syntax


goroutine 1 [running]:

main.main()

    /tmp/sandbox1756881518/prog.go:14 +0x149


Program exited.

上面的程序正在处理字符串"\220\254\0021\265\235O~\244\326\216\"\227c\245\002",但无法将字符串转换"\235\273\'\021\003\261@\022\226\275o\265\322\002\211\263"为 uuid。如何将这些字符串转换为 UUID?


红颜莎娜
浏览 188回答 1
1回答

慕婉清6462132

如果失败是因为\'. 使用反引号时,所有反斜杠实际上都是反斜杠而不是转义序列,因此您将原始反斜杠\,后跟单引号'传递给strconv.Unquote. 它会导致无效的语法。这里有两种解决方法:第一的只需替换这一行:s := `"\235\273\'\021\003\261@\022\226\275o\265\322\002\211\263"`有了这个:s := `"\235\273'\021\003\261@\022\226\275o\265\322\002\211\263"`所以'没有\'。但如果您需要以编程方式转换字符串,请使用第二种方法。第二导入"strings":import (    "fmt"    "strconv"    "strings"    "github.com/google/uuid")并替换\'为':s = strings.ReplaceAll(s, `\'`, `'`)所以现在完整的代码看起来像这样:package mainimport (    "fmt"    "strconv"    "strings"    "github.com/google/uuid")func main() {    s := `"\235\273\'\021\003\261@\022\226\275o\265\322\002\211\263"`    s = strings.ReplaceAll(s, `\'`, `'`)    s2, err := strconv.Unquote(s)    if err != nil {        fmt.Println(err)    }    by := []byte(s2)    u, err := uuid.FromBytes(by)    if err != nil {        fmt.Println(err)    }    fmt.Println(u.String())}
打开App,查看更多内容
随时随地看视频慕课网APP