タイプの変数をbyte
符号なし形式で出力する必要があります。それ、どうやったら出来るの?
1976 次
2 に答える
3
私はあなたのためにそのメソッドを書いたところです。
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補数をカバーしますが、出力が長すぎるため、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);
}
}
于 2011-03-19T17:33:53.120 に答える
2
符号付き整数から始めて、絶対値が必要だと言っていますか?あなたはこのようなことをすることができます:
byte b = Byte.parseByte("-9");
int i = (int) b;
System.out.println(Math.abs(i));
于 2011-03-19T17:30:58.710 に答える