Apache poi excel颜色单元格问题

我正在使用Apache poi来编写excel数据。

String colour = "A2C465"; byte[] ret = new byte[3]; for(int i=0; i<3; i++){ ret[i] = (byte)hexToInt(colour.charAt(i * 2), colour.charAt(i*2+1)); } public int hexToInt(char a, char b){ int x = a < 65 ? a-48 : a-55; int y = b < 65 ? b-48 : b-55; return x*16+y; } 

循环迭代后,我得到ret = {-94,-60,101}。但实际的RGB代码是{162,196,101}(因为从int转换为字节)。因为这个颜色在excel表单中变得不同。你可以帮助我呢?

Axel Richter的评论有您正在寻找的答案,如果您需要将字节转换为int,则应该按位使用,并避免保留符号。 以下示例将字节显示为其有符号值,并将其转换为int。

  byte[] ret = DatatypeConverter.parseHexBinary("A2C465"); for (byte b: ret) { int asInt = b & 0xFF; System.out.println(b + " vs " + asInt); } 

如果返回值是负数,只需添加256!

-94 + 256 = 162

-60 + 256 = 196

101将保持101,因为一个字节的范围从-128到127。