質問

タイプの変数を印刷する必要があります byte 署名のない形式。それ、どうやったら出来るの?

役に立ちましたか?

解決

署名されたintから始めて、絶対値が必要だと言っていますか?あなたはこのようなことをすることができます:

    byte b = Byte.parseByte("-9");
    int i = (int) b;

    System.out.println(Math.abs(i));

他のヒント

私はあなたのためにその方法を書いたばかりです。

public static String printUnsignedByte(byte b){
    StringBuilder sb = new StringBuilder();
    while(b>0){
        sb.insert(0, b%2==0?0:1);
        b>>=1;
    }
    for(int i = 8-sb.length(); i>0; i--){
        sb.insert(0,0);
    }
    return sb.toString();
}

編集:ただし、2の補完形式の形式をカバーしていません。あなたもそれが必要ですか? edit2:チェックアウト:

Integer.toBinaryString(2)

ネガティブ値のために2ESのcompめいをカバーしますが、出力が長すぎると、4ビットがあります。サブストリングでこれを短くするだけで、完了です。

編集3:私の最終的な解決策。

public static String printUnsignedByte(byte b){
    if(b>0){
        StringBuilder ret = new StringBuilder(Integer.toBinaryString(b));
        for(int i = 8-ret.length(); i>0; i--){
            ret.insert(0,0);
        }
        return ret.toString();
    }else{
        return Integer.toBinaryString(b).substring(24);
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top