在Golang中将二进制值转换为字符串uint32

Rem*_*rio 0 type-conversion go

您好我想在golang中使用00000000000000000000000000001011转换为uint32

var v = "00000000000000000000000000001011"
fmt.Printf("%T\n", v)
c := []byte(v)
u := binary.LittleEndian.Uint32(c)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

icz*_*cza 7

你不能使用encoding/binary它,因为它是序列化和反序列化不同值(例如数字)的(内存)字节.你拥有的是数字的基数2字符串表示.

要获取其整数值,您必须解析它.为此,使用strconv.ParseUint():

s := "00000000000000000000000000001011"
u, err := strconv.ParseUint(s, 2, 32)
if err != nil {
    panic(err)
}
fmt.Println(u)
Run Code Online (Sandbox Code Playgroud)

输出(在Go Playground上试试):

11
Run Code Online (Sandbox Code Playgroud)

请注意,strconv.ParseUint()返回值类型uint64,因此如果需要uint32,您必须手动转换它,例如:

u32 := uint32(u)
Run Code Online (Sandbox Code Playgroud)

从字符串中解析数字有更多选项,概述,检查Go中的将字符串转换为整数类型?