# Unsigned int in signed int umwandeln



## RalleYTN (23. Mai 2017)

Hey Loits!
Versuche gerade die Kopfdaten von OGG Dateien auszulesen.
Bin auf das Problem gestoßen, dass ich Daten unsigned speichere, diese jedoch als signed benötigt sind.


```
int o1 = (readData.get(readData.size() - 2) & 0xFF) << 24; // octet 1
int o2 = (readData.get(readData.size() - 3) & 0xFF) << 16; // octet 2
int o3 = (readData.get(readData.size() - 4) & 0xFF) << 8; // octet 3
int o4 = readData.get(readData.size() - 5) & 0xFF; // octet 4
int unsignedInt = o1 | o2 | o3 | o4; // muss jetzt signed werden.
```

Habe jedoch jetzt keine Ahnung wie ich das mache.


----------



## thecain (23. Mai 2017)

Da gibt's doch eine Methode auf Integer. ToSigned oder so...


----------



## RalleYTN (23. Mai 2017)

thecain hat gesagt.:


> Da gibt's doch eine Methode auf Integer. ToSigned oder so...


Nope. Es gibt eine Integer.toUnsignedString(int) Methode. Würde jedoch einen String liefern und nichts konvertieren.


----------



## mrBrown (23. Mai 2017)

Ei int ist in Java immer signed, da gibts keine unsigned ints.


----------



## RalleYTN (23. Mai 2017)

mrBrown hat gesagt.:


> Ei int ist in Java immer signed, da gibts keine unsigned ints.


Also muss ich garkeine Konversion durchführen?


----------



## mrBrown (23. Mai 2017)

Naja, du kannst das Problem haben, dass dein unsigned zu groß für signed ist


----------



## RalleYTN (23. Mai 2017)

mrBrown hat gesagt.:


> Naja, du kannst das Problem haben, dass dein unsigned zu groß für signed ist


Also muss ich doch irgendwie konvertieren. Das es soetwas wie unsigned in Java nicht gibt war mir klar. jedoch ist der integer den ich moment habe auf bit ebene unsigned.
Jetzt ist noch die Frage wie konvertiere ich den nun?


----------



## stg (23. Mai 2017)

```
long unsignedLong = unsignedInt & 0xffffffffl;
```

Sowas?


----------



## RalleYTN (23. Mai 2017)

Aha ich sehe gerade eine Konversion ist doch nicht notwendig.
0xFFFFFFFF liefert ja bereits -1. OK da stand ich einfach auf dem schlauch.
Wenn man den Wert beibehalten möchte ist @stg Lösung richtig.

EDIT: tatsächlich musste ich die Lösung von @stg 3 header felder weiter anwenden.


----------

