将 RGB 颜色值转换为十六进制字符串

2022-08-31 10:35:15

在我的Java应用程序中,我能够获得红色,绿色和蓝色的a;我已将这些值存储在三个s中。ColorJButtonint

如何将这些 RGB 值转换为包含等效十六进制表示形式的值?如String#0033fA


答案 1

您可以使用

String hex = String.format("#%02x%02x%02x", r, g, b);  

如果您希望生成的十六进制数字大写(vs. ),请使用大写 X。#FFFFFF#ffffff


答案 2

一个衬里,但没有所有RGB颜色:String.format

Color your_color = new Color(128,128,128);

String hex = "#"+Integer.toHexString(your_color.getRGB()).substring(2);

如果要切换到大写字母,则可以添加一个。请注意,这对于所有 RGB 颜色都是有效的(如问题中所问的)。.toUpperCase()

当您有 ARGB 颜色时,可以使用:

Color your_color = new Color(128,128,128,128);

String buf = Integer.toHexString(your_color.getRGB());
String hex = "#"+buf.substring(buf.length()-6);

一个衬里理论上也是可能的,但需要调用HexString两次。我对 ARGB 解决方案进行了基准测试,并将其与之进行比较,该解决方案具有更高的性能:String.format()toHexString

enter image description here


推荐