我需要在golang中通过base64编码以下字符串
"{\n\t\"signature\" = \"ZwXG56AezlHRTBhL8cTqA==\";\n\t\"purchase-info\" = \"RXRjL0dNVCI7Cn0=\";\n\t\"environment\" = \"Sandbox\";\n\t\"pod\" = \"100\";\n\t\"signing-status\" = \"0\";\n}"
我尝试做到如下
rec = []byte("{\n\t\"signature\" = \"ZwXG56AezlHRTBhL8cTqA==\";\n\t\"purchase-info\" = \"RXRjL0dNVCI7Cn0=\";\n\t\"environment\" = \"Sandbox\";\n\t\"pod\" = \"100\";\n\t\"signing-status\" = \"0\";\n}")
str := base64.StdEncoding.EncodeToString(rec)
fmt.Println(str)
Run Code Online (Sandbox Code Playgroud)
输出量
ewoJInNpZ25hdHVyZSIgPSAiWndYRzU2QWV6bEhSVEJoTDhjVHFBPT0iOwoJInB1cmNoYXNlLWluZm8iID0gIlJYUmpMMGROVkNJN0NuMD0iOwoJImVudmlyb25tZW50IiA9ICJTYW5kYm94IjsKCSJwb2QiID0gIjEwMCI7Cgkic2lnbmluZy1zdGF0dXMiID0gIjAiOwp9
但是,它失败了。因为结果与通过https://www.base64encode.org/的base64结果不同,所以
e1xuXHRcInNpZ25hdHVyZVwiID0gXCJad1hHNTZBZXpsSFJUQmhMOGNUcUE9PVwiO1xuXHRcInB1cmNoYXNlLWluZm9cIiA9IFwiUlhSakwwZE5WQ0k3Q24wPVwiO1xuXHRcImVudmlyb25tZW50XCIgPSBcIlNhbmRib3hcIjtcblx0XCJwb2RcIiA9IFwiMTAwXCI7XG5cdFwic2lnbmluZy1zdGF0dXNcIiA9IFwiMFwiO1xufQ==
然后我以这种方式尝试
data1 := []byte(`{\n\t\"signature\" = \"ZwXG56AezlHRTBhL8cTqA==\";\n\t\"purchase-info\" = \"RXRjL0dNVCI7Cn0=\";\n\t\"environment\" = \"Sandbox\";\n\t\"pod\" = \"100\";\n\t\"signing-status\" = \"0\";\n}`)
str1 := base64.StdEncoding.EncodeToString(data1)
fmt.Println(str1)
Run Code Online (Sandbox Code Playgroud)
输出:
e1xuXHRcInNpZ25hdHVyZVwiID0gXCJad1hHNTZBZXpsSFJUQmhMOGNUcUE9PVwiO1xuXHRcInB1cmNoYXNlLWluZm9cIiA9IFwiUlhSakwwZE5WQ0k3Q24wPVwiO1xuXHRcImVudmlyb25tZW50XCIgPSBcIlNhbmRib3hcIjtcblx0XCJwb2RcIiA9IFwiMTAwXCI7XG5cdFwic2lnbmluZy1zdGF0dXNcIiA9IFwiMFwiO1xufQ==
现在结果是正确的。
如何转换原始字符串
[]byte("{\n\t\"signature\" = \"ZwXG56AezlHRTBhL8cTqA==\";\n\t\"purchase-info\" = \"RXRjL0dNVCI7Cn0=\";\n\t\"environment\" = \"Sandbox\";\n\t\"pod\" = \"100\";\n\t\"signing-status\" = \"0\";\n}")
Run Code Online (Sandbox Code Playgroud)
至
[]byte(`{\n\t\"signature\" = \"ZwXG56AezlHRTBhL8cTqA==\";\n\t\"purchase-info\" = \"RXRjL0dNVCI7Cn0=\";\n\t\"environment\" = \"Sandbox\";\n\t\"pod\" = \"100\";\n\t\"signing-status\" = \"0\";\n}`)
Run Code Online (Sandbox Code Playgroud)
在高朗?还是有更好的方法呢?
双引号和反引号表示Go中不同的字符串文字:https : //play.golang.org/p/wfIPUJtxT9n
特别是,反斜杠与反引号一起使用时不能转义;他们被保留。例如,len("\"") == 1(字节0x22),但len(`\"`) == 2(字节0x5C和0x22)。
原始字符串文字是反引号之间的字符序列,如中所示
foo。在引号内,除反引号外,任何字符都可能出现。原始字符串文字的值是由引号之间未解释(隐式为UTF-8编码)的字符组成的字符串。特别是,反斜杠没有特殊含义,并且字符串可能包含换行符。原始字符串文字中的回车符('\ r')从原始字符串值中丢弃。
| 归档时间: |
|
| 查看次数: |
527 次 |
| 最近记录: |