Bit shifting or correcting your string is needed to make this work from a string instantiation.

I think the best answer is to convert your string to a byte array and use the BigInteger(byte[] val) instantiation which will recognize a negative or positive number based on two's complement. Many options exist for that string to byte array conversion. Take your pick.

... oh, and your number is too large to fit into a long, so that's going to be an issue too; you get the least significant bits.