Need to Convert Signed Hex to short

I am in trouble.
I need to convert a signed 16-bit Hexadecimal no to short.
Say I have a string s = "f2f7"
Which is a negative number and lies in the range -32768 to 32767 so is the range of type short.
But when I do

short num ;
num = Short.parseShort(s, 16) ;

it throws an exception complaining about out of range value for short.
Actually it treats it as Integer and convert f2f7 to 62199 and then tries to assign it to num which is short.
I have views the source of parseShort and it calls Integer.parseInteger(s, i) inside it.

How can I get actual signed value of "f1f7" and assign it to my short (num) ??
it works fine for values in the range "0000" to "7fff".

A bit of game (and there are better ways, to be sure) but, parse it as an int (I know it's the wrong value, but bear with me), get the binary value of that int, lop of the left most bit (the string will only contain enough bits to represent the value) and then parse that as a short with a leading minus sign.

Thanks alot.. Got the solution..
I am actually implementing a Virtual Machine Instruction set which read memory offset in 16 bit HEX, then I need to translate it to some value and add offset into it.. My memory is 64KB. and as it is 16 bit thus have to use Short in order to address it.
ANyhow thanks alot.. it is solved now.