summaryrefslogtreecommitdiff
path: root/src/lib/strings.go
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2008-11-03 11:40:33 -0800
committerRob Pike <r@golang.org>2008-11-03 11:40:33 -0800
commita5668482cead6041edc29afe4002f55436df10fa (patch)
tree3ee5e66952020b4b2ef8f59f50681094ec8a9ef3 /src/lib/strings.go
parent0512e7bc60efcd6309deab33a8b91ab9e430daca (diff)
downloadgolang-a5668482cead6041edc29afe4002f55436df10fa.tar.gz
ascii to unsigned integer
R=rsc DELTA=60 (35 added, 17 deleted, 8 changed) OCL=18339 CL=18343
Diffstat (limited to 'src/lib/strings.go')
-rw-r--r--src/lib/strings.go56
1 files changed, 37 insertions, 19 deletions
diff --git a/src/lib/strings.go b/src/lib/strings.go
index 5f27d42ac..1d7a7cc83 100644
--- a/src/lib/strings.go
+++ b/src/lib/strings.go
@@ -116,23 +116,9 @@ export func join(a *[]string, sep string) string {
return string(b)
}
-// Convert decimal string to integer.
+// Convert decimal string to unsigned integer.
// TODO: Doesn't check for overflow.
-export func atol(s string) (i int64, ok bool) {
- // empty string bad
- if len(s) == 0 {
- return 0, false
- }
-
- // pick off leading sign
- neg := false;
- if s[0] == '+' {
- s = s[1:len(s)]
- } else if s[0] == '-' {
- neg = true;
- s = s[1:len(s)]
- }
-
+export func atoui64(s string) (i uint64, ok bool) {
// empty string bad
if len(s) == 0 {
return 0, false
@@ -149,21 +135,53 @@ export func atol(s string) (i int64, ok bool) {
}
// parse number
- n := int64(0);
+ n := uint64(0);
for i := 0; i < len(s); i++ {
if s[i] < '0' || s[i] > '9' {
return 0, false
}
- n = n*10 + int64(s[i] - '0')
+ n = n*10 + uint64(s[i] - '0')
+ }
+ return n, true
+}
+
+// Convert decimal string to integer.
+// TODO: Doesn't check for overflow.
+export func atoi64(s string) (i int64, ok bool) {
+ // empty string bad
+ if len(s) == 0 {
+ return 0, false
}
+
+ // pick off leading sign
+ neg := false;
+ if s[0] == '+' {
+ s = s[1:len(s)]
+ } else if s[0] == '-' {
+ neg = true;
+ s = s[1:len(s)]
+ }
+
+ var un uint64;
+ un, ok = atoui64(s);
+ if !ok {
+ return 0, false
+ }
+ n := int64(un);
if neg {
n = -n
}
return n, true
}
+export func atoui(s string) (i uint, ok bool) {
+ ii, okok := atoui64(s);
+ i = uint(ii);
+ return i, okok
+}
+
export func atoi(s string) (i int, ok bool) {
- ii, okok := atol(s);
+ ii, okok := atoi64(s);
i = int(ii);
return i, okok
}