我有一个包含128个值的字符串,例如011100010...
。我想将其转换为十六进制字符串。我发现的是另一个方向:
func partHexToBin(s string) string {
ui, err := strconv.ParseUint(s, 16, 8)
if err != nil {
return ""
}
return fmt.Sprintf("%016b", ui)
}
答案 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上玩耍它