如何使用java将十六进制转换为十进制rgb565?

用户8593931

我正在尝试分别将十六进制转换为十进制 rgb888 和 rgb565 的程序。

我已经完成了将十六进制转换为 rgb888 格式的程序,我的代码如下所示:

String color = "0xFFFF00";
    int hexToRgb = 0;

    color.toLowerCase();
    String[] colorSplited = color.split("0x");
    String splitedConverted = colorSplited[1];

    int R = Integer.valueOf(splitedConverted.substring(0,2), 16);
    int G = Integer.valueOf(splitedConverted.substring(2,4), 16);
    int B = Integer.valueOf(splitedConverted.substring(4,6), 16);

    System.out.println(R + " " + G + " " + B);

我看到一些文章,他们解释说每个 rgb888 组件 R、G 和 B 的变化为 0 和 2^8。我目前的程序没有使用那个特定的过程,但我得到了我需要的结果。

现在我需要制作相同的程序,但要将十六进制转换为 rgb565,。我的十六进制输入如下所示:

String color = “0xFFE0”;

所以要转换的是FFE0。

对于这个输入,我需要得到结果 R = 31、G = 63 和 B = 0。但我不知道我是如何实现这个结果的。我在互联网上得到的是每个组件 RGB 由 0 <= R <= 2^5、0 <= G <= 2^6 和 0 <=B <= 2^5 变化。

不幸的是,我不是数学专家。有人可以帮助我理解这背后的数学原理,或者对我如何得到这个结果有任何建议吗?

伯纳特

首先,每个十六进制字符由 4 位编码。因此,有 4 个十六进制字符意味着您有 16 位来编码颜色。

RGB565 使用 5 位红色,6 位绿色和 5 位蓝色。一种颜色n位意味着它将有2^n 个可能的值。2^5 = 32 和 2^6 = 64,这是您从 Internet 获得的每种颜色的不同值的来源。

要将 RGB565 值拆分为每个单独的颜色,您需要为每个颜色提取相应的位,例如,如下所示:

int redMask   = 0b1111100000000000;
int greenMask = 0b0000011111100000;
int blueMask  = 0b0000000000011111;

String color = "0xFFE0";
int colorAsInteger = Integer.parseInt(color.substring(2,color.length()), 16); // convert the Hex value to int

int R = (colorAsInteger & redMask) >> 11; // keep only red bits
int G = (colorAsInteger & greenMask) >> 5; // keep only green bits
int B = colorAsInteger & blueMask; // keep only blue bits

System.out.println(R + " " + G + " " + B);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用python将十六进制十进制数字转换为十进制

来自分类Dev

如何使用大脑将十进制转换为十六进制?

来自分类Dev

如何使用MIPS将存储的十六进制数组转换为十进制?

来自分类Dev

如何使用VB将十进制转换为十六进制?

来自分类Dev

如何在JavaScript中使用LOOP将十六进制转换为十进制

来自分类Dev

将十进制转换为十六进制值

来自分类Dev

PHP将十进制转换为十六进制

来自分类Dev

将十六进制转换为十进制

来自分类Dev

如何在JavaScript中将RGB十进制转换为十六进制颜色?

来自分类Dev

如何在JavaScript中将RGB十进制转换为十六进制颜色?

来自分类Dev

如何使用二进制补码手动将十六进制转换为十进制

来自分类Dev

Java,使用强制转换从十六进制转换为十进制

来自分类Dev

Java,使用强制转换从十六进制转换为十进制

来自分类Dev

Java代码问题将十进制代码转换为十六进制?

来自分类Dev

将 Java 十六进制转换为十进制时出现错误

来自分类Dev

如何将负十六进制转换为十进制

来自分类Dev

如何将负十进制转换为十六进制?

来自分类Dev

如何将十六进制字符串转换为十进制

来自分类Dev

如何将十六进制字符串转换为十进制值

来自分类Dev

如何将十进制或十六进制值转换为整数?

来自分类Dev

如何将十六进制NSData转换为十进制NSData?

来自分类Dev

汇编:如何将十六进制输入转换为十进制?

来自分类Dev

如何将 '\x80' 十六进制转换为十进制

来自分类Dev

使用awk将第一列从十六进制转换为十进制

来自分类Dev

使用sed或awk将十进制数据字段转换为十六进制

来自分类Dev

使用oracle将十进制转换为带有前导零的十六进制

来自分类Dev

使用awk将第一列从十六进制转换为十进制

来自分类Dev

使用 C 将 u64 十进制转换为十六进制

来自分类Dev

使用 Linux 终端将十六进制数转换为十进制数

Related 相关文章

  1. 1

    使用python将十六进制十进制数字转换为十进制

  2. 2

    如何使用大脑将十进制转换为十六进制?

  3. 3

    如何使用MIPS将存储的十六进制数组转换为十进制?

  4. 4

    如何使用VB将十进制转换为十六进制?

  5. 5

    如何在JavaScript中使用LOOP将十六进制转换为十进制

  6. 6

    将十进制转换为十六进制值

  7. 7

    PHP将十进制转换为十六进制

  8. 8

    将十六进制转换为十进制

  9. 9

    如何在JavaScript中将RGB十进制转换为十六进制颜色?

  10. 10

    如何在JavaScript中将RGB十进制转换为十六进制颜色?

  11. 11

    如何使用二进制补码手动将十六进制转换为十进制

  12. 12

    Java,使用强制转换从十六进制转换为十进制

  13. 13

    Java,使用强制转换从十六进制转换为十进制

  14. 14

    Java代码问题将十进制代码转换为十六进制?

  15. 15

    将 Java 十六进制转换为十进制时出现错误

  16. 16

    如何将负十六进制转换为十进制

  17. 17

    如何将负十进制转换为十六进制?

  18. 18

    如何将十六进制字符串转换为十进制

  19. 19

    如何将十六进制字符串转换为十进制值

  20. 20

    如何将十进制或十六进制值转换为整数?

  21. 21

    如何将十六进制NSData转换为十进制NSData?

  22. 22

    汇编:如何将十六进制输入转换为十进制?

  23. 23

    如何将 '\x80' 十六进制转换为十进制

  24. 24

    使用awk将第一列从十六进制转换为十进制

  25. 25

    使用sed或awk将十进制数据字段转换为十六进制

  26. 26

    使用oracle将十进制转换为带有前导零的十六进制

  27. 27

    使用awk将第一列从十六进制转换为十进制

  28. 28

    使用 C 将 u64 十进制转换为十六进制

  29. 29

    使用 Linux 终端将十六进制数转换为十进制数

热门标签

归档