Integer.toBinaryString(int); jest pewien problem z tym bo jak jest liczba minusowa to wypełnia do 32 liczb (uzupełnienia bit znaku) a jeśli nie jest to nie wypełnia.
Napisałem taką mała funkcje może komuś się przyda pytanie czy to jest optymalnie napisane? :) czy da się to jeszcze uprościć?
import javax.swing.JApplet;
public class Test95_daneBinarneKodowanie extends JApplet{
@Override public void start(){
System.out.println("start applet");
System.out.println("liczba 17 wypelniona do 6 miejsca od prawej --> "+format((byte) 17,6));
System.out.println("liczba 4 wypelniona do 8 miejsca od prawej --> "+format((byte) 4,8));
}
private int isBitSet(byte liczba, int bit)
{
if ((liczba & (1 << bit)) != 0) {
return 1;
} else {
return 0;
}
}
private String format(byte liczba, int ileBitow)
{
int itemp[] = new int[ileBitow];
StringBuffer temp = new StringBuffer();
//wypelniam tablice
for (int xx=0;xx<ileBitow;xx++){
itemp[xx] = isBitSet(liczba,xx);
}
//odwracam kolejnosc tablicy
int ktory=ileBitow-1;
int itemp2[] = new int[ileBitow];
for (int xx=0;xx<ileBitow;xx++){
itemp2[xx] = itemp[ktory];
ktory--;
}
//sklejam tablice do pastaci stringa
for (int xx=0;xx<ileBitow;xx++){
temp.append(itemp2[xx]);
}
return temp.toString();
}
}
wynik:
liczba 17 wypelniona do 6 miejsca od prawej --> 010001
liczba 4 wypelniona do 8 miejsca od prawej --> 00000100
a w drugą strone jest łatwo :)
Integer.parseInt("1001", 2);