Поскольку используемое вами строковое значение является шестнадцатеричным значением, чтобы преобразовать его в короткое, необходимо удалить 0x
с использованием подстроки и передать основание, как показано ниже:
Short.parseShort(yourHexString.substring(2), 16)
Здесь 16 - основа.Больше информации в документе здесь .
Обновление
Поскольку ОП попросил дать дополнительные пояснения, добавив приведенную ниже информацию.
Короткий тип данных может иметь значения только от -32,768 до 32,767.Он не может содержать 0x3eb напрямую, но может содержать его эквивалентное десятичное значение.Вот почему, когда вы анализируете его в короткую переменную и печатаете, он показывает 1003, что является десятичным эквивалентом 0x3eb.