Просто используйте сдвиг битов. Это работает.
int rgb = 0x00F15D49;
int r = (rgb >>> 16) & 0xFF;
int g = (rgb >>> 8) & 0xFF;
int b = rgb & 0xFF;
Тогда используйте этот метод
Color.RGBtoHSB(int r, int g, int b, float[] hsbvals);
как это:
float[] hsb = Color.RGBtoHSB(r, g, b, null);
Чтобы преобразовать его обратно, просто используйте другой метод (отредактированный, вы были правы):
int rgb = Color.HSBtoRGB(hsb[0], hsb[1], hsb[2]);
System.out.println(Integer.toHexString(rgb));