2016-04-12 13 views
0

Stringで表されるビットのセットを変換する必要があります。 My Stringは8の倍数なので、8で割り、8ビットのサブストリングを内部で得ることができます。次に、これらのサブ文字列をバイトに変換し、16進数で表示する必要があります。たとえば:バイトからバイトへの文字列。値が範囲外です - 変換エラーjava

String seq = "0100000010000110"; 

配列ははるかに長いですが、これはトピックではありません。下にはseqの2つのサブストリングがあります。そして、そのうちの1人に私はトラブルがあります、なぜですか?

 String s_ok = "01000000"; //this value is OK to convert 
     String s_error = "10000110"; //this is not OK to convert but in HEX it is 86 in DEC 134 

    byte nByte = Byte.parseByte(s_ok, 2); 
    System.out.println(nByte); 
    try { 
     byte bByte = Byte.parseByte(s_error, 2); 
     System.out.println(bByte); 
    } catch (Exception e) { 
     System.out.println(e); //Value out of range. Value:"10000110" Radix:2 
    } 
    int in=Integer.parseInt(s_error, 2); 
    System.out.println("s_error set of bits in DEC - "+in + " and now in HEX - "+Integer.toHexString((byte)in)); //s_error set of bits in DEC - 134 and now in HEX - ffffff86 

にエラーが発生した理由を私は計算のために、を変換する問題ではありません、理解することはできません。そこで、整数を試しましたが、ではなく、ffffff86があります。

お手伝いをしてください:どうしてですか?問題を回避する方法について説明します。

System.out.println("s_error set of bits in DEC - "+in + " and now in HEX - "+Integer.toHexString((byte)in & 0xFF)); 

0xFFをが追加されました:

答えて

0

まあ、私はFFFFFFを回避する方法を発見しました。悪いことは - 私はまだ彼らのどこからffffffが来たのかわからないし、私は何をしたのか明らかではありません。それはある種のバイト乗算ですか、それともマスキングですか?道に迷いました。

関連する問題