如何在Julia语言中将RGB值转换为字符串十六进制三元组

如何在Julia语言中将RGB值转换为字符串十六进制三元组,julia,Julia,我使用的是colors.jl包,有RGB值需要转换为十六进制字符串三元组值。最好的方法是什么?在colors.jl中找不到转换函数 谢谢您可以定义一个自定义的结构,它可以从AbstractRGB构造,并且具有适当的show重载,如中所示 import Base: show using ColorTypes struct RGBPacked r::UInt8 g::UInt8 b::UInt8 function (::Type{RGBPacked})(c::AbstractRG

我使用的是colors.jl包,有RGB值需要转换为十六进制字符串三元组值。最好的方法是什么?在colors.jl中找不到转换函数


谢谢

您可以定义一个自定义的
结构
,它可以从
AbstractRGB
构造,并且具有适当的
show
重载,如中所示

import Base: show
using ColorTypes

struct RGBPacked
  r::UInt8
  g::UInt8
  b::UInt8

  function (::Type{RGBPacked})(c::AbstractRGB)
    colvec  = (red(c), green(c), blue(c))
    temp    = map(UInt8, map(x->floor(255*x), colvec))
    new(temp[1], temp[2], temp[3])
  end
end

function show(io::IO, r::RGBPacked)
  print(io, "#$(hex(r.r))$(hex(r.g))$(hex(r.b))")
end
然后,您可以使用自定义数据类型,如中所示

c1 = RGB(1.,0.5,0.7)
c2 = RGBPacked(c1)
哪张照片

Main> c1 = RGB(1.,0.5,0.7)
RGB{Float64}(1.0,0.5,0.7)

Main> c2 = RGBPacked(c1)
#ff7fb2

根据Bogumil的建议,Colors.jl提供了
hex
功能:

julia> using Colors

julia> hex(RGB(1,0.5,0))
"FF8000"

hex
函数是否满足您的要求?