二进制字符串到十六进制

时间:2018-09-04 18:44:02

标签: go

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

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

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

1 个答案:

答案 0 :(得分:4)

您可以用另一种方法执行完全相同的操作,因为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

随时在Playground上玩耍它