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

如何在 Go 中定义位文字?

如何在 Go 中定义位文字?

Go
翻阅古今 2023-06-26 16:22:32
有没有办法像var i=0b0001111Golang ( 1.12v ) 中那样定义位文字,就像在 C 和其他一些语言中一样?
查看完整描述

1 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

Go 编程语言规范

2019 年 5 月 14 日版本


整数文字


整数文字是表示整数常量的数字序列。可选前缀设置非十进制基数:0b 或 0B 表示二进制,0、0o 或 0O 表示八进制,0x 或 0X 表示十六进制。单个 0 被视为十进制零。在十六进制文字中,字母 a 到 f 和 A 到 F 代表值 10 到 15。


为了便于阅读,下划线字符 _ 可能出现在基本前缀之后或连续数字之间;这样的下划线不会改变文字的值。


int_lit        = decimal_lit | binary_lit | octal_lit | hex_lit .

decimal_lit    = "0" | ( "1" … "9" ) [ [ "_" ] decimal_digits ] .

binary_lit     = "0" ( "b" | "B" ) [ "_" ] binary_digits .

octal_lit      = "0" [ "o" | "O" ] [ "_" ] octal_digits .

hex_lit        = "0" ( "x" | "X" ) [ "_" ] hex_digits .


decimal_digits = decimal_digit { [ "_" ] decimal_digit } .

binary_digits  = binary_digit { [ "_" ] binary_digit } .

octal_digits   = octal_digit { [ "_" ] octal_digit } .

hex_digits     = hex_digit { [ "_" ] hex_digit } .

对于 Go 1.13 及更高版本,请使用二进制或十六进制:


package main


import "fmt"


func main() {

    b := byte(0b00010011)

    fmt.Printf("%08b %02x\n", b, b)

    x := byte(0x13)

    fmt.Printf("%08b %02x\n", x, x)

}

输出:


00010011 13

00010011 13

对于 Go 1.12 及更早版本,使用十六进制:


package main


import "fmt"


func main() {

    x := byte(0x13)

    fmt.Printf("%08b %02x\n", x, x)

}

输出:


00010011 13


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

添加回答

举报

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