0

文字列をバイトに変換しようとしていますが、NumberFormatException.

String s = "SYNC";
Byte b = Byte.valueOf(s);
System.out.println(b);
4

5 に答える 5

2
  String example = "This is an example";
  byte[] bytes = example.getBytes();
于 2013-02-18T08:10:08.953 に答える
0

Java のバイトの範囲は [-128;127] です。ASCII char 値 83、89、78、67 としてエンコードされた「SYNC」文字列。4 つの値のシーケンスを 1 つの値に変換したくないのはどうしてですか?

呼び出しシーケンス: Byte.valueOf(str) => Byte.parseByte(str, 10) => Integer.parseInt(str, 10)

  1. したがって、文字列を基数 10 の数値として使用しようとします。この文字列内のすべての文字が 10 (この基数の最大値) より大きいため、NumberFormatException がスローされます。

  2. 文字列内のすべての文字が有効なベース 10 文字の場合。文字列「546」など、paseInt は正しく終了します。ただし、parseByte はバイト範囲 [-127:128] をチェックします。値が範囲内にない場合 NumberFormatException。

于 2013-02-18T08:17:47.590 に答える
0

使ってみて.getBytes()

String s = "SYNC";
byte[] lst = s.getBytes();
for(byte b : lst ){
 System.out.println(b);
}

探しているのが特定の文字列の 1 文字である場合は、.charAt()代わりに使用することをお勧めします。(または、単純に を使用して byte を char に変換することもできます(char))。

System.out.println(s.charAt(0)); //Prints first character from given string
于 2013-02-18T08:00:59.357 に答える
0

文字列は、一連のバイトにのみ変換できます。

java.lang.Byteさらにドキュメントが言うように、文字列内の文字はすべて10進数でなければなりませんまたは引数は、のAPIが言うように、符号付き10進数バイトを表すものとして解釈されます。

指定された文字列で指定された値を保持する Byte オブジェクトを返します。引数は、あたかも引数が parseByte(java.lang.String) メソッドに与えられたかのように、符号付き 10 進バイトを表すものとして解釈されます。結果は、文字列で指定されたバイト値を表す Byte オブジェクトです。

以下のようにしてください。

String s = "SYNC";
byte[] b = s.getBytes();
于 2013-02-18T08:01:02.817 に答える
0

数値はバイト範囲内である必要があります。そうでない場合、NumberFormatException がスローされます。

 byte[] bytes = s.getBytes();

これを試して:

于 2013-02-18T08:01:38.870 に答える