0

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

...

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

更新帖子:

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

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

是不够的。

4

1 回答 1

6

怎么样:

int p1 = b[0];
// etc

等一下。您想将字符解释为数字并使用这些值。如果您确定字节值是 ASCII 数字代码,您可以这样做:

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

如果你想要一个正式正确的方法来做到这一点:

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

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

于 2012-11-09T05:54:41.723 回答