插件窝 干货文章 Go语言中如何将十六进制字符串转换为uint8数组?

Go语言中如何将十六进制字符串转换为uint8数组?

数组 字节 十六进制 转换 832    来源:    2025-03-15

在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)
}

代码解释:

  1. hex.DecodeString(hexStr): 这个函数将十六进制字符串解码为字节数组([]byte)。[]byte实际上就是[]uint8,因为byteuint8的别名。

  2. make([]uint8, len(byteArray)): 创建一个uint8数组,长度与解码后的字节数组相同。

  3. 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]

注意:

  • 由于byteuint8的别名,所以实际上你不需要显式地将[]byte转换为[]uint8,因为它们本质上是相同的类型。你可以直接使用[]byte作为[]uint8

如果你只是需要将十六进制字符串转换为字节数组,可以直接使用hex.DecodeString,而不需要额外的转换步骤。