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

use*_*541 2 go

如果我是字节数组:

byte_array := []byte("klm,\x15\xf1\n")
Run Code Online (Sandbox Code Playgroud)

我想以LittleEndian顺序将字节\ x15和\ xf1添加到uint16.这样做最简单的方法是什么?

尝试以下方法:

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

但我一无所获,这是相对复杂的,有更简单的方法吗?

谢谢...

One*_*One 11

您有2个选项,使用像您已经做过的binary.LittleEndian,更短的方法是:

u16 := binary.LittleEndian.Uint16(byte_array[4:])
Run Code Online (Sandbox Code Playgroud)

或者如果你喜欢生活危险,你可以使用不安全:

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

playground

  • 如果您喜欢危险地生活,请为+1 (2认同)