我必须在我的java程序中将RGB颜色代码转换为十六进制代码,我不知道该怎么做。我应该使用System.out.printf()语句来进行转换。
有人能告诉我一个如何在Java中执行此操作的示例吗?我真的很感激!
答案 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