int Val = -32768;
String Hex = Integer.toHexString(Val);
This equates to ffff8000.
int FirstAttempt = Integer.parseInt(Hex, 16); // Error "Invalid Int"
int SecondAttempt = Integer.decode("0x" + Hex); // Error "Invalid Int"
So, initially, it converts the value -32768 into a hex string ffff8000, but then it can't convert the hex string back into an Integer.
In .Net it works as I'd expect, and returns -32768.
I know that I could write my own little method to convert this myself, but I'm just wondering if I'm missing something, or if this is genuinely a bug?