diff options
| author | Ondřej Surý <ondrej@sury.org> | 2011-09-13 12:00:31 +0200 |
|---|---|---|
| committer | Ondřej Surý <ondrej@sury.org> | 2011-09-13 12:00:31 +0200 |
| commit | 04f99b387021a8ce32a8795360cba9beaf986a81 (patch) | |
| tree | f806c632c5dec5bb83190946d6d8ff8bd33c0e57 /src/pkg/net/parse.go | |
| parent | d9514677ddaa705852cbba5034cb6d284261b53a (diff) | |
| download | golang-04f99b387021a8ce32a8795360cba9beaf986a81.tar.gz | |
Imported Upstream version 2011.09.07upstream-weekly/2011.09.07
Diffstat (limited to 'src/pkg/net/parse.go')
| -rw-r--r-- | src/pkg/net/parse.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/pkg/net/parse.go b/src/pkg/net/parse.go index de46830d2..0d30a7ac6 100644 --- a/src/pkg/net/parse.go +++ b/src/pkg/net/parse.go @@ -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 |
