我试着在32位ubuntu上用下面的代码把字符串转换成uint,但是它总是用uint64来转换,尽管函数中明确地传递了32作为参数,下面的代码mw是image magick库的对象,当mw.getImageWidth()
和mw.getImageHeight()
被调用时,它返回uint
,另外,它接受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
2条答案
按热度按时间vcudknz31#
Package strconv
函数解析单元
ParseUint与ParseInt类似,但用于无符号数字。
函数解析整数
ParseInt以给定的基址(2到36)解释字符串s,并返回相应的值i。如果base == 0,则基址由字符串的前缀隐含:以16为基数表示“0x”,以8为基数表示“0”,以10为基数表示其它值。
bitSize参数指定结果必须适合的整数类型。位大小0、8、16、32和64对应于int、int 8、int 16、int 32和int 64。
ParseInt返回的错误具体类型为 *NumError,包含err.Num = s,如果s为空或包含无效数字,则err.Err = ErrSyntax,返回值为0;如果对应于s的值不能由给定大小的带符号整数表示,则Err.Err = ErrRange,并且返回值是适当的bitSize和符号的最大幅度整数。
bitSize
参数指定结果必须适合的整数类型。uint
类型大小由实现定义,为32位或64位。ParseUint
返回类型始终为uint64
。例如,输出:
8e2ybdfx2#
下面是一个将string转换为uint的简单方法。