# int -> 4 bytes



## Prometheus (3. Dez 2006)

Hallo
Ich möchte aus integer und den anderen primitiven Datentypen entsprechend viele bytes bilden, und das ganze auch wieder umgekehrt, also aus z.B. 4 bytes eine integerzahl bilden.
Wie kann man das am besten realisieren?


----------



## Prometheus (3. Dez 2006)

Wie man die Zahl in bytes aufteilt habe ich raus gefunden, aber wie bekomme ich aus z.B. 4 bytes eine integer?


----------



## SnooP (3. Dez 2006)

auf dem umgekehrten weg, wie das teilen würd ich sagen  ... wie teilst du denn? guck dir die shift-operationen << , >> an. Mit | kann man dann Bits setzen.


----------



## Guest (3. Dez 2006)

```
int i = 123456;
    
    byte b1 = (byte) ((i >> 24) & 0xFF);
    byte b2 = (byte) ((i >> 16) & 0xFF);
    byte b3 = (byte) ((i >> 8) & 0xFF);
    byte b4 = (byte) (abc  & 0xFF);
```

hab ich hier im Forum gefunden und langsam kapier ich das auch. Nur umgekehrt krieg ich es nicht hin.


----------



## Prometheus (3. Dez 2006)

ich war der Gast


----------



## Gast (3. Dez 2006)

wenn du das mit dem shiften verstanden hast dann ist es ganz leicht andersrum zumachen


----------



## Gast (3. Dez 2006)

bzw. kannst du das auch mit einem einfachen * und + machen


----------



## Ark (3. Dez 2006)

Gast hat gesagt.:
			
		

> bzw. kannst du das auch mit einem einfachen * und + machen


:autsch:


```
byte b1=1;
byte b2=2;
byte b3=3;
byte b4=4;

int i=((int)b1&0xFF)|((int)b2&0xFF)<<8|((int)b3&0xFF)<<16|((int)b4&0xFF)<<24;
```
Wenn die Bytes in einem größeren Datentyp gespeichert sind (short oder int) ist das einfacher:

```
int i=b1|b2<<8|b3<<16|b4<<24;
```
Das Ergebnis dieses Beispiels ist immer 0x04030201.

Ark


----------



## Roar (3. Dez 2006)

das & 0xFF kann man sich doch auch sparen ???:L


----------



## Ark (3. Dez 2006)

Roar hat gesagt.:
			
		

> das & 0xFF kann man sich doch auch sparen ???:L


Nee, kann man nicht. Das Vorzeichen in byte verschwindet nicht von allein, aus -1 wird nicht einfach so 255. 

Denke ich jedenfalls. oO


----------



## Roar (3. Dez 2006)

hm an negative zahlen hab ich gar nich gedacht, aber da bezog sich auch eigentlich auf Gasts code, denn da bringt das & 0xFF auch bei negativen zahlen nix


----------



## Prometheus (3. Dez 2006)

Danke für eure Antworten. War mir eine große Hilfe.


----------

