目录

golang位移操作的一个小坑

问题描述

现有int16类型的整数,将它转为两个字节存放。在还原时,一不小心会就被坑了。

错误用法

length := int(keyBytes[cursor] + keyBytes[cursor+1] <<8)

正确用法

keyBytes := []byte{ 16, 1}
length := int(uint16(keyBytes[cursor]) + uint16(keyBytes[cursor+1]) <<8)

错误原因

字节byte位移时类型不会自动变化, 先要转换类型再位移。

佛說大乘無量壽莊嚴清淨平等覺經pdf 净土大经科注2014-doc 此生必看的科学实验-水知道答案 印光大师十念法(胡小林主讲第1集)