如何使用Java中的System.out.printf()语句将RGB值转换为十六进制值

时间:2013-10-17 15:07:25

标签: java rgb hex

我必须在我的java程序中将RGB颜色代码转换为十六进制代码,我不知道该怎么做。我应该使用System.out.printf()语句来进行转换。

有人能告诉我一个如何在Java中执行此操作的示例吗?我真的很感激!

2 个答案:

答案 0 :(得分:5)

我认为你只是问如何获取三进制的十进制整数,例如rgb(0, 100, 255)并将其转换为单个十六进制字符串,就像它们在HTML中使用一样,例如#0064FF。我使用printf代替println

System.out.printf("#%02X%02X%02X%n", red, green, blue);

如果你真的开始使用println,那么你可以使用String.format进行转换:

System.out.println(String.format("#%02X%02X%02X", red, green, blue));

如果您想了解它的工作原理,可以阅读Java's Format String Syntax。基本上,%02X表示:将int打印为两位大写的十六进制数,必要时用零填充。他们还建议使用%n代替\n作为字符串末尾的换行符,因为它更独立于平台(在Windows上会被转换为\r\n。)

答案 1 :(得分:0)

有几种不同的方法可以做到这一点。以下是一些想法。

如果您ALWAYS希望对象在打印时显示十六进制值,请覆盖您的toString(),以便它为您提供正确的输出。这不是最佳的...如果您将来决定toString()需要做些不同的事情会怎么样?

更好的方法是添加public String asHex()方法,以便始终明确您的操作。然后你可以:

System.out.println(new rgb(0, 0, 0).asHex());

你会看到#000000