有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java十六进制字符串到int的转换工作不正常

我有一个十六进制数(一种颜色)存储在一个字符串中,如下所示:“ff62e6b8”。 我需要将其转换回整数,以便再次将其用作颜色值。 我尝试了以下方法:

Int i = Integer.parseInt("ff62e6b8", 16);
Int i = Integer.valueOf("ff62e6b8", 16);
Int i = Integer.decode("ff62e6b8");

但所有这些方法都会引发例外。我是不是遗漏了什么


共 (4) 个答案

  1. # 1 楼答案

    试试这个:

    int colorVal = Color.parseColor("#ff62e6b8");
    

    示例:

    myLayout.setBackgroundColor(Color.parseColor("#ff62e6b8"));
    

    这样你就可以得到colorVal = -10295624

    如果您想从colorVal生成hexColor代码,请使用以下命令:

    String hexColor = String.format("#%06X", (0xFFFFFF & colorVal));
    

    这样你就可以得到hexColor = #62E6B8

    谢谢

  2. # 2 楼答案

    FF62E6B8是十进制的4284671672。把它放在int里简直太大了。在int中,可以存储与范围<-2^31 - 1 ; 2^31 - 1>匹配的值。尝试改用long

    Long i = Long.parseInt("ff62e6b8", 16);
    Long i = Long.valueOf("ff62e6b8", 16);
    Long i = Long.decode("ff62e6b8"); 
    
  3. # 3 楼答案

    第一个是好的

    但是ff62e6b8超过了int(32位有符号)的大小,这就是引发异常的原因

    Long l = Long.parseLong("ff62e6b8", 16);
    

    我应该做这项工作

  4. # 4 楼答案

    String hex = "1B";
    int val = Integer.parseInt(hex, 16);
    

    这是正确的转换