go - 二进制字符串转十六进制
问题描述
我有一个包含 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
随意在操场上玩它
推荐阅读
- php - disqus 评论框未显示帖子
- javascript - EaselJS 图片缩放模糊
- sql - 多次加入后删除重复
- javascript - 在表或数组上使用 for 循环来组合相同类别的多个条目
- php - numfmt_format_currency 但没有美分
- python - 从 DBF 文件中提取字段名称和类型
- r - 加入数据集时如何删除重复观察
- com - Windows Store 应用程序中的 RunningObjectTable 访问
- c# - Xamarin Forms api 调用不返回包含在 json 字符串中的相关实体
- angular - 事件触发多次(多次)时的socket.io + angular2 +观察者多个状态(路由)