猿问

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

我正在尝试使用以下代码在 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-arguments

test.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.ResizeImage

goImageCode/AmazonAWS.go:100: cannot use ht (type uint64) as type uint in argument to mw.ResizeImage



吃鸡游戏
浏览 954回答 1
1回答

慕码人8056858

包 strconvfunc ParseUintfunc&nbsp;ParseUint(s&nbsp;string,&nbsp;base&nbsp;int,&nbsp;bitSize&nbsp;int)&nbsp;(n&nbsp;uint64,&nbsp;err&nbsp;error)ParseUint 类似于 ParseInt,但用于无符号数。func ParseIntfunc&nbsp;ParseInt(s&nbsp;string,&nbsp;base&nbsp;int,&nbsp;bitSize&nbsp;int)&nbsp;(i&nbsp;int64,&nbsp;err&nbsp;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 mainimport (&nbsp; &nbsp; "fmt"&nbsp; &nbsp; "strconv")func main() {&nbsp; &nbsp; width := "42"&nbsp; &nbsp; u64, err := strconv.ParseUint(width, 10, 32)&nbsp; &nbsp; if err != nil {&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println(err)&nbsp; &nbsp; }&nbsp; &nbsp; wd := uint(u64)&nbsp; &nbsp; fmt.Println(wd)}输出:42
随时随地看视频慕课网APP

相关分类

Go
我要回答