我有一个十六进制字符,比如说
char c = 'A';
将其转换为整数值的正确方法是什么
int value =??;
assert(a == 10);
如果 a 是一个int或一个字节,那么现在真的没关系。
答案 0 :(得分:17)
我不明白你为什么要转换为字符串...实际上这就是parseInt使用的:
public static int digit(char ch, int radix)
int hv = Character.digit(c,16);
if(hv<0)
//do something else because it's not hex then.
答案 1 :(得分:5)
int value;
try {
value = Integer.parseInt(Character.toString(c), 16);
}
catch (NumberFormatException e) {
throw new IllegalArgumentException("Not a hex char");
}
答案 2 :(得分:5)
虽然发现了它。
int i = Character.digit('A',16);
答案 3 :(得分:1)
(byte)Integer.parseInt(“a”,16)
答案 4 :(得分:0)
看看Commons Codec,特别是Hex类。
http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Hex.html
您应该能够使用toDigit()方法将十六进制字符数组或字符串转换为int值:
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转换为相应的字节数组。