在Go语言中,你可以使用encoding/hex
包来将十六进制字符串转换为uint8
数组(即字节数组)。以下是一个示例代码,展示了如何实现这一转换:
package main
import (
"encoding/hex"
"fmt"
)
func main() {
// 十六进制字符串
hexStr := "48656c6c6f20576f726c64" // "Hello World" 的十六进制表示
// 将十六进制字符串转换为字节数组
byteArray, err := hex.DecodeString(hexStr)
if err != nil {
fmt.Println("Error decoding hex string:", err)
return
}
// 打印字节数组
fmt.Println("Byte array:", byteArray)
// 如果需要将字节数组转换为uint8数组,可以直接使用byteArray,因为byte是uint8的别名
uint8Array := make([]uint8, len(byteArray))
for i, b := range byteArray {
uint8Array[i] = uint8(b)
}
// 打印uint8数组
fmt.Println("Uint8 array:", uint8Array)
}
hex.DecodeString(hexStr)
: 这个函数将十六进制字符串解码为字节数组([]byte
)。[]byte
实际上就是[]uint8
,因为byte
是uint8
的别名。
make([]uint8, len(byteArray))
: 创建一个uint8
数组,长度与解码后的字节数组相同。
for i, b := range byteArray
: 遍历字节数组,将每个字节转换为uint8
并存储到uint8Array
中。
Byte array: [72 101 108 108 111 32 87 111 114 108 100]
Uint8 array: [72 101 108 108 111 32 87 111 114 108 100]
byte
是uint8
的别名,所以实际上你不需要显式地将[]byte
转换为[]uint8
,因为它们本质上是相同的类型。你可以直接使用[]byte
作为[]uint8
。如果你只是需要将十六进制字符串转换为字节数组,可以直接使用hex.DecodeString
,而不需要额外的转换步骤。