为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
三国纷争 2023-06-12 09:54:02
您好,我正在尝试使用 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)
查看完整回答
反对 回复 2023-06-12
?
呼啦一阵风

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


查看完整回答
反对 回复 2023-06-12
  • 2 回答
  • 0 关注
  • 225 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信