# Integer to Byte



## Wolfsbein (17. Oktober 2004)

*Zahl in Bits (Dualzahl) ausgeben*

Edit: Denkfehler
Hallo
wie kann ich eine Zahl z.B. 12 in Java konvertieren und mit dem neuen Datentyp auch weiterrechnen?
EDIT: Ich weiß, dass ich mit BitSet den entsprechenden Datentyp habe. Nur habe ich keine Ahnung wie ich eine Int Zahl am saubersten da rein bekomme. Eine Möglichkeit wäre ja die Int Zahl mit %2 herunterzubrechen. Aber das gibts doch bestimmt schon, oder?


----------



## Thomas Darimont (17. Oktober 2004)

Hallo!

Also ich weis jetzt nicht genau was du eiegntlich willst aber suchst du vielleicht nach

```
package de.tutorials;

public class Test05 {

	public static void main(String[] args) {
		int a = 1341241;
		System.out.println(Integer.toBinaryString(a)); //101000111011100111001
		long b = 130912890480L;
		System.out.println(Long.toBinaryString(b));// 1111001111011000001000010111001110000
		float c = 1389.32432F;
		System.out.println(Integer.toBinaryString(Float.floatToIntBits(c))); //1000100101011011010101001100001
		double d = 13124132.1231231;
		System.out.println(Long.toBinaryString(Double.doubleToLongBits(d))); //100000101101001000010000100010010000011111100001001111111011011
	}
}
```

Gruß Tom


----------



## Wolfsbein (17. Oktober 2004)

Vielen Dank für Dein Beispiel, aber das ist es nicht ganz. Ich werds mir aber für die Zukunft merken. Ich machs jetzt so:

```
/**
     * intToBitset setzt die Bits die den Int Parameter x represäntieren im 
     * zurückgegebenen BitSet.
     * @author Mathias Wagner
     * @param x
     * @return
     */
    private BitSet intToBitset(int x) {
        
        BitSet bs = new BitSet();
        int result, counter = 0;
        boolean stopCond = false;
        
        // Int Zahl herunterbrechen und bei % 2 == 1 im BitSet schreiben
        do {
            result = x % 2;
            x = x / 2;
            if (x < 1) stopCond = true;
            if(result == 1) bs.set(counter);
            counter++;
        } while (stopCond == false);
        
        return bs;
    }
```


----------



## Thomas Darimont (17. Oktober 2004)

Also wäre folgendes dann auch Korrekt?

```
import java.util.BitSet;

public class Test06 {

	public static void main(String[] args) {
		int a = 12432132;
		BitSet bs = new BitSet();
		String bitStr = Integer.toBinaryString(a);
		int len = bitStr.length();
		for (int i = 0; i < len; i++)
			if (bitStr.charAt(i) == '1')
				bs.set(i);
			
		System.out.println(bitStr);
		int bLen = bs.length();
		for(int i = 0; i <bLen;i++)
			System.out.print(bs.get(i) ? 1 : 0);
	}
}
```

Gruß Tom


----------



## Wolfsbein (18. Oktober 2004)

Ja das wäre auch richtig. Die Frage ist jetzt nur was bessre / schneller ist.


----------



## Thomas Darimont (18. Oktober 2004)

Deine Varainte ist natürlich schneller, da bei mener implizit bei jedem Methoden aufruf erstmal noch zusätzlich ein neues String Objekt gebaut wird.

Gruß Tom


----------

