二进制字符串到十六进制

问题描述 投票:1回答:1

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

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

    return fmt.Sprintf("%016b", ui)
}
go
1个回答
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上玩它

© www.soinside.com 2019 - 2024. All rights reserved.