为了账号安全,请及时绑定邮箱和手机立即绑定

将符文转换为整数?

将符文转换为整数?

Go
繁花如伊 2021-07-11 12:13:10
在下面的代码中,我string逐个迭代一个符文,但实际上我需要一个int来执行一些校验和计算。我真的需要来编码rune成一个[]byte,然后将其转换为一个string,然后用Atoi获得的int出来的rune?这是惯用的方法吗?// The string `s` only contains digits.var factor intfor 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
查看完整描述

3 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

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


查看完整回答
反对 回复 2021-07-19
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

例如sum += (int(c) - '0') * factor,


package main


import (

    "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


查看完整回答
反对 回复 2021-07-19
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

你为什么不只做“字符串(符文)”。


s:="12345678910"

var factor,sum int

for 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)


查看完整回答
反对 回复 2021-07-19
  • 3 回答
  • 0 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信