有一个字节[4]包含用于随机十六进制数字的字符代码,即b [0] == 49,b [1] == 68,b [2] == 70 ...

我想使用这些十六进制值来计算内容,因此我需要将char值转换为int。听起来很简单,但是我的解决方案看起来很糟糕:

char c1 = ((char)b[0]);
String s1 = String.valueOf(c1);
int p1 = Integer.parseInt(s1);

char c2 = ((char)b[1]);
String s2 = String.valueOf(c2);
int p2 = Integer.parseInt(s2);

...


有没有更短的方法?我的问题中有很多通用关键字,我也无法通过Google找到解决方案。

更新的帖子:

糟糕,我忘了提到byte []包含十六进制值了。所以

int x = b[0] - '0';


不够。

最佳答案

怎么样:

int p1 = b[0];
// etc


等一下。您想将字符解释为数字并使用值。如果确定字节值是ASCII数字代码,则可以执行以下操作:

int p1 = b[0] - '0';
// etc


如果您想要一种形式上正确的方法:

int p1 = Character.getNumericValue(b[0]);
// etc


这样可以正确处理十六进制字符(0、1,...,F),甚至可以处理'\u216C'(罗马数字FIFTY)之类的东西。

10-05 23:00
查看更多