编码/十六进制:无效字节:U+0068 'h' Golang

我正在尝试将 astring转换为byte包含其十六进制值的数组,这是我编写的代码:


package main


import (

     "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]。


心有法竹
浏览 445回答 2
2回答

喵喵时光机

我想将 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)

猛跑小猪

您的代码正在尝试从十六进制解码。该字符串不是十六进制编码的。要编码为十六进制试试这个b := fmt.Sprintf("%x", str)fmt.Printf("Decoded bytes %v", []byte(b))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go