教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang实现颜色的rgb值和十六进制值互相转换

golang实现颜色的rgb值和十六进制值互相转换

发布时间:2023-03-13   编辑:jiaochengji.com
教程集为您提供golang实现颜色的rgb值和十六进制值互相转换等资源,欢迎您收藏本站,我们将为您提供最新的golang实现颜色的rgb值和十六进制值互相转换资源

给定一个颜色的rgb值如何转换成hex,反过来又如何转换?

在本节,我们需要掌握基本的面向对象知识--如何给一个类型添加方法。还需要掌握strconv这个包

写出结构体

type RGB struct {
  red, green, blue int64
}

type HEX struct {
  str string
}

method

现在我们就可以构建RGB的颜色对象和HEX的颜色对象了。对于对象来说,除了属性外,还应当包含一些方法。我们可以给RGB类型的对象一个方法,rgb2hex。

要把rgb转成hex,其实就是把r,g,b分别转成16进制(字符串),再拼起来。

strconv.FormatInt(r,16) //返回r的16进制表达

但是要注意,如果r,g,b中存在小于16的值,上面的方法就行不通了。比如r值为11,用上面的方法得到的是"b",但是合法的hex希望我们得到的是"0b",所以我们需要判断,如果得到的字符串只有一位,则在其左侧补上一个0

func t2x ( t int64 ) string {
  result := strconv.FormatInt(t, 16)
  if len(result) == 1{
    result = "0"   result
  }
  return result
}

下面我们就可以写出我们的 rgb2hex 的函数了

func (color RGB) rgb2hex() HEX {
  r := t2x(color.red)
  g := t2x(color.green)
  b := t2x(color.blue)
  return HEX{r g b}
}

同样,我们也可以写出hex2rgb,这里我们使用strconv.ParseInt()来将字符串解析为整数

func (color HEX) hex2rgb() RGB {
  r, _ := strconv.ParseInt(color.str[:2], 16, 10)
  g, _ := strconv.ParseInt(color.str[2:4], 16, 18)
  b, _ := strconv.ParseInt(color.str[4:], 16, 10)
  return RGB{r,g,b}
}

测试

func main() {
  color1 := RGB{11,33,243}
  fmt.Println(color1.rgb2hex().str)
  color2 := HEX{"0b21f3"}
  fmt.Println(color2.hex2rgb())
}

全部代码如下:

package main

import (
	"fmt"
	"strconv"
)

type RGB struct {
	red, green, blue int64
}

type HEX struct {
	str string
}

func t2x(t int64) string {
	result := strconv.FormatInt(t, 16)
	if len(result) == 1 {
		result = "0"   result
	}
	return result
}

func (color RGB) rgb2hex() HEX {
	r := t2x(color.red)
	g := t2x(color.green)
	b := t2x(color.blue)
	return HEX{r   g   b}
}

func (color HEX) hex2rgb() RGB {
	r, _ := strconv.ParseInt(color.str[:2], 16, 10)
	g, _ := strconv.ParseInt(color.str[2:4], 16, 18)
	b, _ := strconv.ParseInt(color.str[4:], 16, 10)
	return RGB{r, g, b}
}

func main() {
	color1 := RGB{11, 33, 243}
	fmt.Println(color1.rgb2hex().str)
	color2 := HEX{"0b21f3"}
	fmt.Println(color2.hex2rgb())
}

执行结果:

D:/PROGRAM/Golang/src/study/RGBTransform/RGBTransform.exe  [D:/PROGRAM/Golang/src/study/RGBTransform]
0b21f3
{11 33 243}
成功: 进程退出代码 0.

 

到此这篇关于“golang实现颜色的rgb值和十六进制值互相转换”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Javascript 将 rgb 颜色值转换为 16 进制值的代码
CSS颜色值的三种形式:名称、RGB和十六进制
jquery获取样式中background-color颜色值
golang 映射 map 简介
PHP如何实现字符串16进制转换2进制?
js获取网页背景色与字体色的方法
学习网页技术CSS样式颜色属性的使用
JQuery获取样式中的background-color颜色值的问题
使用HTML5 Canvas为图片填充颜色和纹理
基于jQuery的烟花效果(运动相关)点击屏幕出烟花

[关闭]
~ ~