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

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

十六进制 数组 字符串 字节 133    来源:    2025-03-13

在Go语言中,你可以使用encoding/hex包来将十六进制字符串转换为uint8数组(即[]byte)。以下是一个示例代码,展示了如何实现这一转换:

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类型在Go中是uint8的别名
    uint8Array := byteArray

    // 打印uint8数组
    fmt.Println("Uint8 array:", uint8Array)
}

代码解释:

  1. hex.DecodeString: 这个函数将十六进制字符串解码为字节数组([]byte)。如果输入的字符串不是有效的十六进制字符串,它会返回一个错误。

  2. byteuint8: 在Go语言中,byteuint8 的别名,因此 []byte[]uint8 是等价的。

  3. 错误处理: 如果输入的十六进制字符串无效,hex.DecodeString 会返回一个错误,因此需要检查并处理可能的错误。

输出示例:

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]

在这个示例中,十六进制字符串 "48656c6c6f20576f726c64" 被成功转换为对应的字节数组,并且可以将其视为 uint8 数组使用。