【问题标题】:How to convert RGB values to Hexidecimal values using System.out.printf() statement in Java如何使用 Java 中的 System.out.printf() 语句将 RGB 值转换为十六进制值
【发布时间】:2013-10-26 03:54:17
【问题描述】:

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

谁能告诉我如何在 Java 中执行此操作的示例?我真的很感激!

【问题讨论】:

  • 什么是“RGB 颜色代码”?它是三个字节,三个整数,一个数组还是打包成一个整数的字节?请给我们看一些代码。
  • 对不起。是三个整数。所以我有“rgb(13,139,214)”,我需要将它转换成十六进制格式。

标签: java rgb hex


【解决方案1】:

我认为您只是在问如何获取十进制整数的三元组,例如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)。

【讨论】:

    【解决方案2】:

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

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

    更好的方法是添加一个public String asHex() 方法,这样它总是清楚你在做什么。然后你可以:

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

    你会看到 #000000

    【讨论】:

      猜你喜欢
      • 2011-05-06
      • 2016-02-29
      • 1970-01-01
      • 2023-01-16
      • 2015-06-21
      • 2015-03-13
      • 2020-01-04
      • 2012-12-31
      相关资源
      最近更新 更多