gpt4 book ai didi

arrays - 编码/十六进制 : invalid byte: U+0068 'h' Golang

转载 作者:IT王子 更新时间:2023-10-29 02:27:55 26 4
gpt4 key购买 nike

我正在尝试将 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 的链接:http://play.golang.org/p/8PMEFTCYSd

但它给我错误 *encoding/hex: invalid byte: U+0068 'h' Golang *。这里有什么问题?我想将我的 string 转换为 byte 数组,其中包含 string 中每个字符的十六进制值。我希望 b[n] 包含 str[n] 的十六进制值。

最佳答案

I want to convert my string into byte array containing hexadecimal values of each character in the string.

您可以使用简单的类型 conversionstring 简单地转换为 []byte(字节 slice ,与数组不完全相同!) :

b := []byte(str)

大功告成!

如果您想将其打印为十六进制字符串,您可以使用fmt.Printf() 来实现。同时使用 string[]byte 的函数:

fmt.Printf("%x", str)
// Or:
fmt.Printf("%x", b)

提示:您可以使用格式字符串 "% x" 在字节/字符的每个十六进制形式之间打印一个空格:

fmt.Printf("% x", str)

如果你想要十六进制形式的结果作为字符串,你可以使用fmt.Sprintf()变体:

hexst := fmt.Sprintf("%x", str)
// Or:
hexst := fmt.Sprintf("%x", b)

或者您可以使用 hex.EncodeToString() 作为替代方案encoding/hex 包中的函数:

hexst := hex.EncodeToString(b)

关于arrays - 编码/十六进制 : invalid byte: U+0068 'h' Golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29360197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com