当前位置: 首页 > 知识库问答 >
问题:

Java:如何将十六进制转换为int?

岳炎彬
2023-03-14

我正在使用BuffereImage(PNG),希望用另一种颜色替换一种颜色。我将所有颜色存储为字符串,以便于处理,但。。。

for(int x=0;x<output.getWidth();x++)
    for(int y=0;y<output.getHeight();y++)
        if(output.getRGB(x,y)==Integer.parseInt("ffff00fe",16))
            output.setRGB(x,y,Integer.parseInt("ffaaaaaa",16));

结果整数应该是负数,但它抛出NumberFormatException

当我做output.getRGB(x, y)时,它在非透明像素上返回负数

共有3个答案

阴波峻
2023-03-14

2,147,483,647(或十六进制7FFFFFFF)是32位有符号二进制整数的最大正值。您尝试转换的内容几乎是它的两倍,这意味着二进制数的第一位是1;在有符号二进制整数中,第一位是1意味着它是负数。

基本上,你需要一些更大的东西来解析它。试试看(int)Long。parseLong(“ffff00fe”,16)而不是整数。parseInt(“ffff00fe”,16)

沈永新
2023-03-14

大于0x7fff\U ffff的值太大,无法作为有符号整数处理 Java 8添加了处理int的方法,就像它们包含无符号值一样。只需将parseInt替换为parseUnsignedInt

Integer.parseUnsignedInt("ffaaaaaa", 16)

如果需要使用Java 7及更早版本,可以将其解析为长型,然后将其转换为int.,或者,如果值是常量,可以将其写入数字常量,例如0xffaaaaaa,甚至可以避免处理字符串转换(自Java 7以来,数字中的下划线是允许的,可以使它们更易于读取)。

秦焱
2023-03-14

你可以做的

int number = (int)Long.parseLong("ffff00fe", 16);
 类似资料:
  • 本文向大家介绍如何将十六进制转换为十进制?,包括了如何将十六进制转换为十进制?的使用技巧和注意事项,需要的朋友参考一下 而十六进制数是具有值是16的数字系统中的一个并且它具有唯一的16个码元:0,1,2,3,4,5,6,7,8,9和A,B,C,d,E ,其中A,B,C,D,E和F分别是十进制值10、11、12、13、14和15的单位表示。而十进制系统是最熟悉的号码系统向公众开放。它是10的基数,只

  • 本文向大家介绍如何将十进制转换为十六进制?,包括了如何将十进制转换为十六进制?的使用技巧和注意事项,需要的朋友参考一下 十进制是公众最熟悉的数字系统。它是基数10,只有10个符号-0、1、2、3、4、5、6、7、8和9。而十六进制是计算机或数字系统中最常见的数字系统颜色表示。它是基数16,只有16个符号:0、1、2、3、4、5、6、7、8、9和A,B,C,D,E,F。这些A,B,C,D ,E,F分

  • 问题内容: 如何将十六进制字符串转换为base64?我发现此页面http://home2.paulschou.net/tools/xlate/,但是我需要Java中的某些功能:我在Internet上找到了一些东西,但是它们很难使用字节数组。我正在寻找一些更简单的东西 问题答案: 看看Commons Codec:

  • 问题内容: 我正在编写一个go程序,将十六进制转换为int,binary和ascii。int和二进制文件工作正常,但是ascii引起了问题。如果输入的文本少于2个字符,则可以正常工作,但是如果输入的文本过多,则会导致出现格式错误的文本。我的代码如下: 输入十六进制“ 73616d706c65 ” 时的一些输出示例: 我已经做了很多搜索,并且看到了一些有关“符文”的文档,但是我不确定这是如何工作的。

  • 我需要转换十六进制- 当我运行这个错误实际上是显示我需要的值但我不能得到它 groovy.lang.的方法:静态java.lang.我nteger.parseInt()适用于参数类型:(java.math.大整数,java.lang.整数)值:[28855032353026779507009821653742961358,...]可能的解决方案:parseInt(java.lang.String,

  • 问题内容: 我这里有一个将十进制转换为十六进制的函数,但它以相反的顺序打印。我该如何解决? 问题答案: 如果要自己编写此代码而不是使用内置函数,则可以在打印当前数字之前简单地进行递归调用: