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

在 go lang 中将字符串转换为 uint

在 go lang 中将字符串转换为 uint

Go
吃鸡游戏 2021-12-07 17:20:44
我正在尝试使用以下代码在 32 位 ubuntu 上将字符串转换为 uint。但是它总是在 uint64 中转换它,尽管在函数中显式地传递了 32 作为参数。下面的代码mw是image magick库的对象。uint当mw.getImageWidth()和mw.getImageHeight()被调用时返回。此外,它接受resize函数中的uint类型参数。    width :=  strings.Split(imgResize, "x")[0]    height := strings.Split(imgResize, "x")[1]    var masterWidth uint = mw.GetImageWidth()     var masterHeight uint = mw.GetImageHeight()     mw := imagick.NewMagickWand()    defer mw.Destroy()    err = mw.ReadImageBlob(img)    if err != nil {            log.Fatal(err)        }     var masterWidth uint = mw.GetImageWidth()     var masterHeight uint = mw.GetImageHeight()    wd, _ := strconv.ParseUint(width, 10, 32)    ht, _ := strconv.ParseUint(height, 10, 32)   if masterWidth < wd || masterHeight < ht {      err = mw.ResizeImage(wd, ht, imagick.FILTER_BOX, 1)     if err != nil {        panic(err)    }    }错误是:# command-line-argumentstest.go:94: invalid operation: masterWidth < wd (mismatched types uint and uint64)goImageCode/test.go:94: invalid operation: masterHeight < ht (mismatched types uint and uint64)goImageCode/test.go:100: cannot use wd (type uint64) as type uint in argument to mw.ResizeImagegoImageCode/AmazonAWS.go:100: cannot use ht (type uint64) as type uint in argument to mw.ResizeImage
查看完整描述

1 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

包 strconv

func ParseUint

func ParseUint(s string, base int, bitSize int) (n uint64, err error)

ParseUint 类似于 ParseInt,但用于无符号数。

func ParseInt

func ParseInt(s string, base int, bitSize int) (i int64, err error)

ParseInt 解释给定基数(2 到 36)中的字符串 s 并返回相应的值 i。如果基数 == 0,则基数由字符串的前缀隐含:基数 16 表示“0x”,基数 8 表示“0”,否则基数 10。

bitSize 参数指定结果必须适合的整数类型。位大小 0、8、16、32 和 64 对应于 int、int8、int16、int32 和 int64。

ParseInt 返回的错误具有具体类型 *NumError 并包括 err.Num = s。如果 s 为空或包含无效数字,则 err.Err = ErrSyntax 返回值为 0;如果与 s 对应的值不能用给定大小的有符号整数表示,则 err.Err = ErrRange 并且返回值是适当的 bitSize 和符号的最大数量级整数。

bitSize参数指定的整数类型,其结果必须适合。该uint类型大小实现定义的,32或64位。在ParseUint返回类型始终uint64。例如,

package main


import (

    "fmt"

    "strconv"

)


func main() {

    width := "42"

    u64, err := strconv.ParseUint(width, 10, 32)

    if err != nil {

        fmt.Println(err)

    }

    wd := uint(u64)

    fmt.Println(wd)

}

输出:


42


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

添加回答

举报

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