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

go中的颜色操作

go中的颜色操作

Go
烙印99 2022-11-23 13:31:38

有一些简单的颜色操作,但是输出是错误的。我只是想知道这里发生了什么。


主程序:


package main


import (

    "fmt"

    "image/color"

)


func main() {

    startColor := color.RGBA{0x34, 0xeb, 0x64, 0xff}

    endColor := color.RGBA{0x34, 0xc9, 0xeb, 0xff}

    fmt.Printf("%d-%d=%d\n", endColor.G, startColor.G, endColor.G-startColor.G)

}


输出:


201-235=222


查看完整描述

1 回答

?
慕森卡

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

color.RGBA.G是一个uint8 由于 235 大于 201,但 uint8 不存储 -34 之类的负数,因此该值是换行的。

没有什么color具体的情况。您会得到相同的答案(222):

    var g1, g2 uint8 = 0xc9, 0xeb
    fmt.Println(g1 - g2)

所以没有什么不寻常的,只是标准的Go unsigned integer overflow wrapping。它甚至不是未定义的行为。


查看完整回答
反对 回复 2022-11-23

添加回答

举报

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