# mystrtonum --- convert string to number # # Arnold Robbins, arnold@skeeve.com, Public Domain # February, 2004 # Revised June, 2014 function mystrtonum(str, ret, n, i, k, c) { if (str ~ /^0[0-7]*$/) { # octal n = length(str) ret = 0 for (i = 1; i <= n; i++) { c = substr(str, i, 1) # index() returns 0 if c not in string, # includes c == "0" k = index("1234567", c) ret = ret * 8 + k } } else if (str ~ /^0[xX][[:xdigit:]]+$/) { # hexadecimal str = substr(str, 3) # lop off leading 0x n = length(str) ret = 0 for (i = 1; i <= n; i++) { c = substr(str, i, 1) c = tolower(c) # index() returns 0 if c not in string, # includes c == "0" k = index("123456789abcdef", c) ret = ret * 16 + k } } else if (str ~ \ /^[-+]?([0-9]+([.][0-9]*([Ee][0-9]+)?)?|([.][0-9]+([Ee][-+]?[0-9]+)?))$/) { # decimal number, possibly floating point ret = str + 0 } else ret = "NOT-A-NUMBER" return ret } # BEGIN { # gawk test harness # a[1] = "25" # a[2] = ".31" # a[3] = "0123" # a[4] = "0xdeadBEEF" # a[5] = "123.45" # a[6] = "1.e3" # a[7] = "1.32" # a[8] = "1.32E2" # # for (i = 1; i in a; i++) # print a[i], strtonum(a[i]), mystrtonum(a[i]) # }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
assert.awk | File | 383 B | 0644 |
|
bits2str.awk | File | 334 B | 0644 |
|
cliff_rand.awk | File | 307 B | 0644 |
|
ctime.awk | File | 234 B | 0644 |
|
ftrans.awk | File | 315 B | 0644 |
|
getopt.awk | File | 2.15 KB | 0644 |
|
gettime.awk | File | 2.43 KB | 0644 |
|
group.awk | File | 1.72 KB | 0644 |
|
have_mpfr.awk | File | 221 B | 0644 |
|
inplace.awk | File | 1.95 KB | 0644 |
|
intdiv0.awk | File | 462 B | 0644 |
|
join.awk | File | 378 B | 0644 |
|
libintl.awk | File | 238 B | 0644 |
|
noassign.awk | File | 422 B | 0644 |
|
ord.awk | File | 937 B | 0644 |
|
passwd.awk | File | 1.17 KB | 0644 |
|
processarray.awk | File | 355 B | 0644 |
|
quicksort.awk | File | 1.01 KB | 0644 |
|
readable.awk | File | 489 B | 0644 |
|
readfile.awk | File | 267 B | 0644 |
|
rewind.awk | File | 404 B | 0644 |
|
round.awk | File | 661 B | 0644 |
|
shellquote.awk | File | 472 B | 0644 |
|
strtonum.awk | File | 1.42 KB | 0644 |
|
walkarray.awk | File | 214 B | 0644 |
|
zerofile.awk | File | 424 B | 0644 |
|