Go - 将 2 字节数组转换为 uint16 值

标签 go byte

如果我在 Go 中有一段字节,类似于这样:

numBytes := []byte { 0xFF, 0x10 }

如何将其转换为 uint16 值 (0xFF10, 65296)?

最佳答案

你可以使用binary.BigEndian.Uint16(numBytes)
就像这个工作示例代码(带有注释输出):

package main

import (
    "encoding/binary"
    "fmt"
)

func main() {
    numBytes := []byte{0xFF, 0x10}
    u := binary.BigEndian.Uint16(numBytes)
    fmt.Printf("%#X %[1]v\n", u) // 0XFF10 65296
}

并查看 binary.BigEndian.Uint16(b []byte) 的内部:

func (bigEndian) Uint16(b []byte) uint16 {
    _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808
    return uint16(b[1]) | uint16(b[0])<<8
}

希望对您有所帮助。

关于Go - 将 2 字节数组转换为 uint16 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38675266/

相关文章:

go - 在 goroutine 中使用 cmd.Command 启动 Web 服务器,应用程序终止时进程不会关闭

C++ 从文件中读/写 N 个字节(甚至是 '00' 字节)

java - 我的 int 的字节数

java - 在 Android 中将 int 转换为 byte

go - glolang编译器中的空函数优化

go - 在Goroutine : why should this work?中推迟对sync.WaitGroup.Wait()的调用

google-app-engine - 谷歌应用引擎去 SDK : Request to '/' failed

go - 如何在循环外使用模板变量?

Python - 混合两个音频 block

c++ - 如何在 C++ 中将字节转换为 ASCII 十六进制表示形式?