2011-12-20 38 views
2

文字列をバイトに変換するにはどうすればよいですか?たとえば、Byte.parseByte("255");NumberFormatExceptionです(何らかの理由で)byteがjavaのsignedであるため、最大値は127です。文字列からバイトへの変換

だから私は

public static byte toByte(String input) { 
... 
} 

そして例toByte("255");については-1(すなわちビット:11111111に)返すような機能を必要とする2s complement

+2

erm ... intに変換してからバイトにキャストしますか? – thecoshman

+1

"何らかの奇妙な理由でバイトが署名されています"。これとは対照的に、いくつかの奇妙な理由で署名されていないのですか? – DJClayworth

+0

バイトは主にバイナリデータのために使用されているので、記号がないはずですので、C、C++、delphi、C#、メモリスペース効率の良い数字が必要な場合は、「short」 – Caner

答えて

8

利用Integer.parseInt("255")の実装などの

何かをして結果をキャストしますint~byte

byte value = (byte)Integer.parseInt("255"); 
+0

+1この作品は、ありがとう – Caner

+2

ダム私の臆病な性質!それは私の答えでなければなりません! – thecoshman

0

私は次の実装について考えています。

public static byte toByte(String input) { 
    Integer value = new Integer(input); 

    // Can be removed if no range checking needed. 
    // Modify if different range need to be checked. 
    if (value > 255 || value < 0) 
     throw new NumberFormatException("Invalid number"); 

    return value.byteValue(); 
} 
1
public static void main(String[] args) {  
    String s = "65"; 
    byte b = Byte.valueOf(s); 
    System.out.println(b); 

    // Causes a NumberFormatException since the value is out of range 
    System.out.println(Byte.valueOf("129")); 
    } 
1

バイト値=(バイト)Integer.parseInt( "255")。

関連する問題