是否可以像在C语言和某些其他语言中一样在Golang( 1.12v )中定义位文字,例如var i=0b0001111
?
答案 0 :(得分: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