optimize bounds check in bytes conversion

pull/1524/head^2
Darien Raymond 6 years ago
parent 7abd11cc63
commit c52310cf54
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169

@ -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…
Cancel
Save