mirror of https://github.com/v2ray/v2ray-core
optimize bounds check in bytes conversion
parent
7abd11cc63
commit
c52310cf54
|
@ -9,11 +9,13 @@ func ByteToHexString(value byte) string {
|
|||
|
||||
// BytesToUint16 deserializes a byte array to a uint16 in big endian order. The byte array must have at least 2 elements.
|
||||
func BytesToUint16(value []byte) uint16 {
|
||||
_ = value[1] // bounds check hint to compiler; see golang.org/issue/14808
|
||||
return uint16(value[0])<<8 | uint16(value[1])
|
||||
}
|
||||
|
||||
// BytesToUint32 deserializes a byte array to a uint32 in big endian order. The byte array must have at least 4 elements.
|
||||
func BytesToUint32(value []byte) uint32 {
|
||||
_ = value[3]
|
||||
return uint32(value[0])<<24 |
|
||||
uint32(value[1])<<16 |
|
||||
uint32(value[2])<<8 |
|
||||
|
@ -22,6 +24,7 @@ func BytesToUint32(value []byte) uint32 {
|
|||
|
||||
// BytesToInt deserializes a bytes array (of at leat 4 bytes) to an int in big endian order.
|
||||
func BytesToInt(value []byte) int {
|
||||
_ = value[3]
|
||||
return int(value[0])<<24 |
|
||||
int(value[1])<<16 |
|
||||
int(value[2])<<8 |
|
||||
|
@ -30,6 +33,7 @@ func BytesToInt(value []byte) int {
|
|||
|
||||
// BytesToInt64 deserializes a byte array to an int64 in big endian order. The byte array must have at least 8 elements.
|
||||
func BytesToInt64(value []byte) int64 {
|
||||
_ = value[7]
|
||||
return int64(value[0])<<56 |
|
||||
int64(value[1])<<48 |
|
||||
int64(value[2])<<40 |
|
||||
|
|
Loading…
Reference in New Issue