Если вы хотите проанализировать шестнадцатеричные строки без знака, используйте
byte[] b = new byte[a.length()];
for (int i=0; i<a.length(); i++) {
b[i] = (byte) Short.parseShort(a[i], 16);
}
"ff" будет проанализирован в -1, как комплимент двух .
Если вы хотите, чтобы "ff" анализировал до 255 (больше, чем может удержать байт Java), вам нужно использовать шорты
short[] b = new short[a.length()];
for (int i=0; i<a.length(); i++) {
b[i] = Short.parseShort(a[i], 16);
}