У меня есть один шестнадцатеричный символ, скажем,
char c = 'A';
Как правильно преобразовать это в целочисленное значение
int value =??; assert(a == 10);
На данный момент не имеет значения, является ли a целым числом или байтом.
я не понимаю, почему вам нужно преобразовывать в строку ... фактически это то, что использует parseInt:
общедоступная статическая цифра int (char ch, int radix)
int hv = Character.digit(c,16); if(hv<0) //do something else because it's not hex then.
Хотя сам нашел.
int i = Character.digit('A',16);
int value; try { value = Integer.parseInt(Character.toString(c), 16); } catch (NumberFormatException e) { throw new IllegalArgumentException("Not a hex char"); }
(байт) Integer.parseInt ("a", 16)
Посмотрите на кодек Commons и, в частности, класс Hex.
http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Hex.html
Вы должны быть в состоянии преобразовать шестнадцатеричный массив символов или строку в значение типа int, используя метод toDigit ():
protected static int toDigit(char ch, int index)
Вам нужно будет перехватить DecoderException.
try { int i = Hex.toDigit('C'); } catch (DecoderException de) { log.debug("Decoder exception ", de); }
Там также есть методы для преобразования char [] или String в соответствующий байтовый массив.