繁体   English   中英

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

[英]Convert binary value as string to uint32 in Golang

您好我正在尝试使用Golang将00000000000000000000000000001011转换为ulang32

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

但是,它不起作用。

您不能为此使用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()返回类型为uint64的值,因此,如果需要uint32 ,则必须手动将其转换,例如:

u32 := uint32(u)

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

例如,

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM