github.com/DQNEO/babygo@v0.0.3/lib/strconv/strconv.go (about) 1 package strconv 2 3 func Itoa(ival int) string { 4 if ival == 0 { 5 return "0" 6 } 7 8 var buf = make([]uint8, 100, 100) 9 var r = make([]uint8, 100, 100) 10 11 var next int 12 var right int 13 var ix = 0 14 var minus bool 15 minus = false 16 for ix = 0; ival != 0; ix = ix + 1 { 17 if ival < 0 { 18 ival = -1 * ival 19 minus = true 20 r[0] = '-' 21 } else { 22 next = ival / 10 23 right = ival - next*10 24 ival = next 25 buf[ix] = uint8('0' + right) 26 } 27 } 28 29 var j int 30 var c uint8 31 for j = 0; j < ix; j = j + 1 { 32 c = buf[ix-j-1] 33 if minus { 34 r[j+1] = c 35 } else { 36 r[j] = c 37 } 38 } 39 40 return string(r[0:ix]) 41 } 42 43 func Atoi(gs string) int { 44 if len(gs) == 0 { 45 return 0 46 } 47 var n int 48 49 var isMinus bool 50 for _, b := range []uint8(gs) { 51 if b == '.' { 52 return -999 // @FIXME all no number should return error 53 } 54 if b == '-' { 55 isMinus = true 56 continue 57 } 58 var x uint8 = b - uint8('0') 59 n = n * 10 60 n = n + int(x) 61 } 62 if isMinus { 63 n = -n 64 } 65 66 return n 67 }