0

ランダムな 16 進数の char コードを含む byte[4] があります。つまり、b[0] == 49、b[1] == 68、b[2] == 70 ...

これらの 16 進値で何かを計算したいので、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[] に 16 進値が含まれていることを忘れていました。そう

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

これにより、16 進文字 (0、1、...、F) や'\u216C'(ROMAN NUMERAL FIFTY) なども正しく処理されます。

于 2012-11-09T05:54:41.723 に答える