【发布时间】:2015-02-11 21:43:56
【问题描述】:
我有一个缓冲区:
buffer := bytes.NewBuffer([]byte{
0x85, 0x02, 0xFF, 0xFF,
0x00, 0x01, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x03,
0x41, 0x42, 0x43,
})
我正在尝试返回缓冲区的 int 值[8:24] 我明白了
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]
不知道如何转移这么大的部分。的字节。
对此很陌生。任何帮助都会很棒。我最初的方法是
requestid := (uint64(buffer.Bytes()[8]&0xff)<<24 + uint64(buffer.Bytes()[9]&0xff)<<16 + uint64(buffer.Bytes()[10]&0xff)<<8 + uint64(buffer.Bytes()[11]&0xff.....)))
但这变得乏味,我知道必须有一个更简单的方法。
【问题讨论】:
-
与直接使用
[]byte切片相比,它位于bytes.Buffer中是否有原因? -
这就是它的传递方式。 ..但要保持这个完整的循环,你是什么意思?有没有更好的办法?
-
这不是缓冲区本身,而是您在
requestId =部分中使用它的方式。请参阅下面的答案。
标签: go bitwise-operators