-5

私は次のような文字列を持っています

01 01 01 02 01 01 20 00 40 0b 00 01 ef cc 45 4e 47 00 1a 02

これを入力としてどのように読むことができますか?私は宣言することを知っています

String s = "01 01 01 02 01 01  20 00 40 0b 00 01 ef cc 45 4e  47 00 1a 02"

明らかにエラーが発生するので、Java を使用してこの入力 (引数として渡される) を読み取ることができるさまざまな方法は何ですか?

4

4 に答える 4

5

これを文字列としてではなく、16 進数データとして読み取りたいと想定しています。

文字列内の空白を削除することから始めます。これにより、「0101010201012000400b0001efcc454e47001a02」のようになります。

次に、次のように保持する BigInteger を作成します。

BigInteger hex = new BigInteger(s, 16);

これで、16 進値が変数 hex に格納されます。

于 2012-09-19T04:22:37.843 に答える
2

それらを可変引数として渡した場合、次のように取得できます。

public static void main(String[] args) {
    if(args.length() > 0) {
        String myInput = args[0]; //Here is where you get them...
        //Process myInput
    }
}
于 2012-09-19T04:22:29.527 に答える
2

これがあなたの謎の番号です

import java.math.BigInteger;
class Main {
  public static void main(String[] args) {
    System.out.println(new BigInteger("01 01 01 02 01 01 20 00 40 0b 00 01 ef cc 45 4e 47 00 1a 02".replaceAll("\\s+", ""), 16));
  }
}

これは

5731379310208105099069359549013101637718252034

http://ideone.com/uGh17でライブ デモをご覧ください。

于 2012-09-19T04:34:01.517 に答える
0
String s = "01 01 01 02 01 01 20 00 40 0b 00 01 ef cc 45 4e 47 00 1a 02";

動作するはずです...

于 2012-09-19T04:20:41.840 に答える