[英]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.