github.com/nsqio/nsq@v1.3.0/internal/protocol/byte_base10.go (about)

     1  package protocol
     2  
     3  import (
     4  	"errors"
     5  )
     6  
     7  var errBase10 = errors.New("failed to convert to Base10")
     8  
     9  func ByteToBase10(b []byte) (n uint64, err error) {
    10  	base := uint64(10)
    11  
    12  	n = 0
    13  	for i := 0; i < len(b); i++ {
    14  		var v byte
    15  		d := b[i]
    16  		switch {
    17  		case '0' <= d && d <= '9':
    18  			v = d - '0'
    19  		default:
    20  			n = 0
    21  			err = errBase10
    22  			return
    23  		}
    24  		n *= base
    25  		n += uint64(v)
    26  	}
    27  
    28  	return n, err
    29  }