github.com/lino-network/lino@v0.6.11/x/reputation/repv2/utils.go (about) 1 package repv2 2 3 // PrefixEndBytes returns the []byte that would end a 4 // range query for all []byte with a certain prefix 5 // Deals with last byte of prefix being FF without overflowing 6 func PrefixEndBytes(prefix []byte) []byte { 7 if len(prefix) == 0 { 8 return nil 9 } 10 11 end := make([]byte, len(prefix)) 12 copy(end, prefix) 13 14 for { 15 if end[len(end)-1] != byte(255) { 16 end[len(end)-1]++ 17 break 18 } else { 19 end = end[:len(end)-1] 20 if len(end) == 0 { 21 end = nil 22 break 23 } 24 } 25 } 26 return end 27 }