我正在尝试将 astring转换为byte包含其十六进制值的数组,这是我编写的代码:package mainimport ( "encoding/hex" "fmt" "os")func main() { str :="abcdefhijklmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ123456789" b, err := hex.DecodeString(str) if err != nil { fmt.Println(err) os.Exit(1) } fmt.Printf("Decoded bytes %v \n ", b)}这是 Go PlayGround 的链接:http : //play.golang.org/p/8PMEFTCYSd但它给了我错误*encoding/hex: invalid byte: U+0068 'h' Golang *。这里有什么问题?我想将 my 转换string为byte包含 .csv 文件中每个字符的十六进制值的数组string。我想b[n]包含的十六进制值str[n]。
2 回答
喵喵时光机
TA贡献1846条经验 获得超7个赞
我想将 my 转换string为byte包含 .csv 文件中每个字符的十六进制值的数组string。
您可以使用简单的类型转换简单地将 a 转换string为 a []byte(字节切片,与数组不完全相同!):
b := []byte(str)
你完成了!
如果您想将其打印为十六进制string,您可以fmt.Printf()使用 thestring和 the函数来实现[]byte:
fmt.Printf("%x", str)
// Or:
fmt.Printf("%x", b)
提示:您可以使用格式字符串"% x"在字节/字符的每个十六进制形式之间打印一个空格:
fmt.Printf("% x", str)
如果要将十六进制形式的结果作为 a string,则可以使用fmt.Sprintf()变体:
hexst := fmt.Sprintf("%x", str)
// Or:
hexst := fmt.Sprintf("%x", b)
或者作为替代,您可以使用包中的hex.EncodeToString()函数encoding/hex:
hexst := hex.EncodeToString(b)
猛跑小猪
TA贡献1858条经验 获得超8个赞
您的代码正在尝试从十六进制解码。该字符串不是十六进制编码的。
要编码为十六进制试试这个
b := fmt.Sprintf("%x", str)
fmt.Printf("Decoded bytes %v", []byte(b))
- 2 回答
- 0 关注
- 444 浏览
添加回答
举报
0/150
提交
取消