将字节数组中包含的char代码转换为int的简短方法?

Jak*_*ake 0 java casting

有一个字节[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);

...
Run Code Online (Sandbox Code Playgroud)

是不是有更短的方法?在我的问题中有很多通用的关键词,我无法通过谷歌找到解决方案.

更新的帖子:

哎呀,我忘了提到byte []包含十六进制值.所以

int x = b[0] - '0';
Run Code Online (Sandbox Code Playgroud)

是不够的.

Ted*_*opp 6

怎么样:

int p1 = b[0];
// etc
Run Code Online (Sandbox Code Playgroud)

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

int p1 = b[0] - '0';
// etc
Run Code Online (Sandbox Code Playgroud)

如果您想要一个正式的正确方法:

int p1 = Character.getNumericValue(b[0]);
// etc
Run Code Online (Sandbox Code Playgroud)

这将正确处理十六进制字符(0,1,...,F)甚至像'\u216C'(ROMAN NUMERAL FIFTY)这样的东西.