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

您好,我正在尝试使用 golang 将 00000000000000000000000000001011 转换为 uint32


var v = "00000000000000000000000000001011"

fmt.Printf("%T\n", v)

c := []byte(v)

u := binary.LittleEndian.Uint32(c)

但是它不起作用。


三国纷争
浏览 226回答 2
2回答

胡子哥哥

您不能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)

呼啦一阵风

例如,package mainimport (    "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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go