您好,我正在尝试使用 golang 将 00000000000000000000000000001011 转换为 uint32var v = "00000000000000000000000000001011"fmt.Printf("%T\n", v)c := []byte(v)u := binary.LittleEndian.Uint32(c)但是它不起作用。
2 回答
胡子哥哥
TA贡献1825条经验 获得超6个赞
您不能encoding/binary
为此使用,因为那是序列化和反序列化不同值(例如数字)的(内存)字节。您拥有的是数字的基数 2 字符串表示形式。
要获得它的整数值,你必须解析它。为此,请使用strconv.ParseUint()
:
s := "00000000000000000000000000001011"
u, err := strconv.ParseUint(s, 2, 32)
if err != nil {
panic(err)
}
fmt.Println(u)
此输出(在Go Playground上尝试):
11
注意,strconv.ParseUint()
返回的是 type 的值uint64
,所以如果需要uint32
,就得手动转换一下,eg:
u32 := uint32(u)
呼啦一阵风
TA贡献1802条经验 获得超6个赞
例如,
package main
import (
"fmt"
"strconv"
)
func main() {
s := "00000000000000000000000000001011"
fmt.Println(s)
u64, err := strconv.ParseUint(s, 2, 32)
u32 := uint32(u64)
if err == nil {
fmt.Println(u32)
}
}
游乐场:https://play.golang.org/p/yiicgWsb7B_M
输出:
00000000000000000000000000001011 11
- 2 回答
- 0 关注
- 225 浏览
添加回答
举报
0/150
提交
取消