String.format () e números hexadecimais em Java

Estou tentando descobrir por queString.format() está se comportando dessa maneir

Contexto: classe de programação de sistemas, escrevendo um montado

Existe um campo hexadecimal de 5 caracteres no arquivo de objeto, que estou criando a partir de um valo

Tentei usar:String.format("%05X", decInt);

Isso funciona conforme o esperado para números positivos (11 ->0000B) No entanto, falha em números negativos (-1 ->FFFFFFFF ao invés deFFFFF)

Suponho que eu possa pegar uma substring dos últimos 5 caracteres, mas ainda gostaria de descobrir por que ela se comporta dessa maneir

questionAnswers(4)

yourAnswerToTheQuestion