将符文转换为整数?

在下面的代码中,我string逐个迭代一个符文,但实际上我需要一个int来执行一些校验和计算。我真的需要来编码rune成一个[]byte,然后将其转换为一个string,然后用Atoi获得的int出来的rune?这是惯用的方法吗?


// The string `s` only contains digits.

var factor int

for i, c := range s[:12] {

    if i % 2 == 0 {

        factor = 1

    } else {

        factor = 3

    }

    buf := make([]byte, 1)

    _ = utf8.EncodeRune(buf, c)

    value, _ := strconv.Atoi(string(buf))

    sum += value * factor

}

在操场上:http : //play.golang.org/p/noWDYjn5rJ


繁花如伊
浏览 206回答 3
3回答

婷婷同学_

问题比看起来更简单。你一个转换rune值的int与值int(r)。但是你的代码意味着你想要的ASCII的整数值出(或UTF-8)表示的数字,你可以平凡与获得r - '0'的rune,或int(r - '0')作为int。请注意,超出范围的符文会破坏该逻辑。

缥缈止盈

例如sum += (int(c) - '0') * factor,package mainimport (    "fmt"    "strconv"    "unicode/utf8")func main() {    s := "9780486653556"    var factor, sum1, sum2 int    for i, c := range s[:12] {        if i%2 == 0 {            factor = 1        } else {            factor = 3        }        buf := make([]byte, 1)        _ = utf8.EncodeRune(buf, c)        value, _ := strconv.Atoi(string(buf))        sum1 += value * factor        sum2 += (int(c) - '0') * factor    }    fmt.Println(sum1, sum2)}输出:124 124

牛魔王的故事

你为什么不只做“字符串(符文)”。s:="12345678910"var factor,sum intfor i,x:=range s{    if i%2==0{            factor=1        }else{        factor=3    }        xstr:=string(x) //x is rune converted to string        xint,_:=strconv.Atoi(xstr)        sum+=xint*factor}fmt.Println(sum)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go