Преобразовать один шестнадцатеричный символ в его значение байта в Java - PullRequest
3 голосов
/ 11 июля 2009

У меня есть один шестнадцатеричный символ, скажем,

char c = 'A';

Как правильно преобразовать это в целочисленное значение

int value =??; 
assert(a == 10);

На данный момент не имеет значения, является ли a целым числом или байтом.

Ответы [ 5 ]

17 голосов
/ 11 июля 2009

я не понимаю, почему вам нужно преобразовывать в строку ... фактически это то, что использует parseInt:

общедоступная статическая цифра int (char ch, int radix)

int hv = Character.digit(c,16);
if(hv<0)
    //do something else because it's not hex then.
5 голосов
/ 11 июля 2009

Хотя сам нашел.

int i = Character.digit('A',16);
5 голосов
/ 11 июля 2009
int value;
try {
    value = Integer.parseInt(Character.toString(c), 16);
}
catch (NumberFormatException e) {
    throw new IllegalArgumentException("Not a hex char");
}
1 голос
/ 11 июля 2009

(байт) Integer.parseInt ("a", 16)

0 голосов
/ 11 июля 2009

Посмотрите на кодек 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 в соответствующий байтовый массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...