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

go中的颜色操作

go中的颜色操作

Go
烙印99 2022-11-23 13:31:38
有一些简单的颜色操作,但是输出是错误的。我只是想知道这里发生了什么。主程序:package mainimport (    "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贡献1806条经验 获得超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
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

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