net: move internal string manipulation routines to parse.go

R=rsc
CC=golang-dev
https://golang.org/cl/4968044
This commit is contained in:
Mikio Hara 2011-08-25 19:22:46 -04:00 committed by Russ Cox
parent 78963f4f1d
commit 825f8c147a
3 changed files with 44 additions and 47 deletions

View file

@ -159,6 +159,18 @@ func xtoi(s string, i0 int) (n int, i int, ok bool) {
return n, i, true
}
// xtoi2 converts the next two hex digits of s into a byte.
// If s is longer than 2 bytes then the third byte must be e.
// If the first two bytes of s are not hex digits or the third byte
// does not match e, false is returned.
func xtoi2(s string, e byte) (byte, bool) {
if len(s) > 2 && s[2] != e {
return 0, false
}
n, ei, ok := xtoi(s[:2], 0)
return byte(n), ok && ei == 2
}
// Integer to decimal.
func itoa(i int) string {
var buf [30]byte
@ -181,6 +193,37 @@ func itoa(i int) string {
return string(buf[n:])
}
// Convert i to decimal string.
func itod(i uint) string {
if i == 0 {
return "0"
}
// Assemble decimal in reverse order.
var b [32]byte
bp := len(b)
for ; i > 0; i /= 10 {
bp--
b[bp] = byte(i%10) + '0'
}
return string(b[bp:])
}
// Convert i to hexadecimal string.
func itox(i uint, min int) string {
// Assemble hexadecimal in reverse order.
var b [32]byte
bp := len(b)
for ; i > 0 || min > 0; i /= 16 {
bp--
b[bp] = "0123456789abcdef"[byte(i%16)]
min--
}
return string(b[bp:])
}
// Number of occurrences of b in s.
func count(s string, b byte) int {
n := 0