在Go语言中,处理二进制数主要通过以下四种方式实现:
一、使用二进制字面量(推荐)
直接使用前缀`0b`或`0B`表示二进制数,简洁直观。例如:
```go
var binaryNumber int = 0b1101 // 十进制13
```
适用于常量定义和简单场景。
二、字符串转二进制数
通过`strconv.ParseInt`将二进制字符串转换为整数,或`strconv.FormatInt`将整数转换为二进制字符串。例如:
```go
binaryString := "1101"
binaryNumber, err := strconv.ParseInt(binaryString, 2, 64)
fmt.Printf("十进制: %dn", binaryNumber) // 输出13
```
适用于从外部输入或文件读取二进制数据。
三、位操作处理
使用位运算符(如`|`、`&`、`^`、`<<`、`>>`)对二进制数进行逻辑运算和位级操作。例如:
```go
var a uint8 = 0b11110000
var b uint8 = 0b00001111
var c uint8 = a | b // 结果为0b11111111
```
适用于需要精细控制二进制位的应用场景。
四、标准库二进制编码/解码
使用`encoding/binary`包进行二进制数据的打包与解包,支持不同字节序(如小端`binary.LittleEndian`)。例如:
```go
var num int32 = 123456
buf := new(bytes.Buffer)
binary.Write(buf, binary.LittleEndian, num)
fmt.Printf("二进制数据: %vn", buf.Bytes()) // 输出
```
适用于网络通信、文件存储等需要二进制数据传输的场景。
总结:根据需求选择合适方式,常量定义优先使用二进制字面量,复杂操作推荐标准库函数或位运算符。