首页 > 解决方案 > 二进制字符串转十六进制

问题描述

我有一个包含 128 个值的字符串,例如011100010.... 我想将其转换为十六进制字符串。我发现的是另一个方向:

func partHexToBin(s string) string {
    ui, err := strconv.ParseUint(s, 16, 8)
    if err != nil {
        return ""
    }

    return fmt.Sprintf("%016b", ui)
}

标签: go

解决方案


你可以用另一种方式做同样的事情,因为ParseInt允许你传递数字的基数(十进制、十六进制、二进制等)

ParseInt 以给定的基数(0、2 到 36)和位大小(0 到 64)解释字符串 s,并返回相应的值 i。

然后,一旦您将ParseUint调用中的基数从 16 更改为 2,您需要使用格式标志更改Sprintf调用以将数字打印为十六进制。%x

但是请注意,使用ParseUint后跟调用Sprintf可能不是最高效的解决方案。

看这个例子:

package main

import (
    "fmt"
    "strconv"
)

func parseBinToHex(s string) string {
    ui, err := strconv.ParseUint(s, 2, 64)
    if err != nil {
        return "error"
    }

    return fmt.Sprintf("%x", ui)
}

func main() {
    fmt.Println(parseBinToHex("11101"))
}

输出给出

1d

随意在操场上玩它


推荐阅读