我有一个包含128个值的字符串,如011100010...
。我想将其转换为十六进制字符串。我找到的是另一个方向:
func partHexToBin(s string) string {
ui, err := strconv.ParseUint(s, 16, 8)
if err != nil {
return ""
}
return fmt.Sprintf("%016b", ui)
}
你可以用另一种方式做同样的事情,因为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上玩它