go - 将字节数组的一部分转换为 uint16 的最简单方法

标签 go

如果我是字节数组:

byte_array := []byte("klm,\x15\xf1\n")

我想以 LittleEndian 顺序将字节\x15 和\xf1 转换为 uint16。最简单的方法是什么?

尝试了以下方法:

var new_uint uint16
bff := bytes.newRead(byte_array[4:5])
err = binary.Read(buff, binary.LittleEndian, &new_uint)

但是我总是什么也得不到,而且这个比较复杂,有没有更简单的方法呢?

谢谢...

最佳答案

你有 2 个选项,像你已经做的那样使用 binary.LittleEndian,一个更短的方法是:

u16 := binary.LittleEndian.Uint16(byte_array[4:])

或者如果你喜欢危险的生活,你可以使用 unsafe:

// This will return the wrong number on a BE system,
// also unsafe is not available on GAE.
u16 := *(*uint16)(unsafe.Pointer(&byte_array[4]))

playground

关于go - 将字节数组的一部分转换为 uint16 的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25408954/

相关文章:

json - 使用Golang从AWS api解析数据

database - 具有$ setIntersection的Mongodb聚合管道

go - 如何在 Revel Controller 中获取 http.ResponseWriter 和 http.Request

go - 通过引用 fmt 传递参数

go - 在完成时将 channel 结果添加到队列的更惯用的方法

postgresql - sql : converting argument $1 type: unsupported type []int, 中的一片

go - time.Sleep 在 VM 上睡了不正确的时间

go - 在 Golang 中实现相同接口(interface)的不同结构

go - 使用路径变量在 golang 中调用 GET REST API

gocql SELECT * 不返回所有列