encoding/hex: 无效字节: U+0068 'h' Golang
encoding/hex: invalid byte: U+0068 'h' Golang
我正在尝试将 string
转换为包含其十六进制值的 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 的 link:http://play.golang.org/p/8PMEFTCYSd
但它给我错误 *encoding/hex:无效字节:U+0068 'h' Golang *。这里有什么问题?我想将 string
转换为 byte
数组,其中包含 string
中每个字符的十六进制值。我希望 b[n]
包含 str[n]
.
的十六进制值
您的代码正在尝试从 十六进制解码 。该字符串不是十六进制编码的。
要将 编码为 十六进制,试试这个
b := fmt.Sprintf("%x", str)
fmt.Printf("Decoded bytes %v", []byte(b))
I want to convert my string
into byte
array containing hexadecimal values of each character in the string
.
您可以使用简单类型 conversion:
将 string
简单地转换为 []byte
(字节切片,与数组不完全相同!)
b := []byte(str)
大功告成!
如果您想将其打印为十六进制 string
,您可以使用 fmt.Printf()
函数同时使用 string
和 []byte
:
fmt.Printf("%x", str)
// Or:
fmt.Printf("%x", b)
提示:您可以使用格式字符串 "% x"
在 bytes/characters 的每个十六进制形式之间打印 space:
fmt.Printf("% x", str)
如果您希望十六进制形式的结果为 string
,您可以使用 fmt.Sprintf()
变体:
hexst := fmt.Sprintf("%x", str)
// Or:
hexst := fmt.Sprintf("%x", b)
或者作为替代方案,您可以使用 encoding/hex
包中的 hex.EncodeToString()
函数:
hexst := hex.EncodeToString(b)
我正在尝试将 string
转换为包含其十六进制值的 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 的 link:http://play.golang.org/p/8PMEFTCYSd
但它给我错误 *encoding/hex:无效字节:U+0068 'h' Golang *。这里有什么问题?我想将 string
转换为 byte
数组,其中包含 string
中每个字符的十六进制值。我希望 b[n]
包含 str[n]
.
您的代码正在尝试从 十六进制解码 。该字符串不是十六进制编码的。
要将 编码为 十六进制,试试这个
b := fmt.Sprintf("%x", str)
fmt.Printf("Decoded bytes %v", []byte(b))
I want to convert my
string
intobyte
array containing hexadecimal values of each character in thestring
.
您可以使用简单类型 conversion:
将string
简单地转换为 []byte
(字节切片,与数组不完全相同!)
b := []byte(str)
大功告成!
如果您想将其打印为十六进制 string
,您可以使用 fmt.Printf()
函数同时使用 string
和 []byte
:
fmt.Printf("%x", str)
// Or:
fmt.Printf("%x", b)
提示:您可以使用格式字符串 "% x"
在 bytes/characters 的每个十六进制形式之间打印 space:
fmt.Printf("% x", str)
如果您希望十六进制形式的结果为 string
,您可以使用 fmt.Sprintf()
变体:
hexst := fmt.Sprintf("%x", str)
// Or:
hexst := fmt.Sprintf("%x", b)
或者作为替代方案,您可以使用 encoding/hex
包中的 hex.EncodeToString()
函数:
hexst := hex.EncodeToString(b)