# Bytes versenden



## Guest (13. Mai 2007)

Ich habe derzeit noch ein theoretisches Problem.
Ich habe bemerkt das ein Byte nicht bis zu 255 rauf geht also habe ich eine uByte Klasse geschrieben:

```
public class uByte {
    byte numb = 0;
    public uByte(int value) {
        this.set(value);
    }
    public void set(int value) {
        if(value < 0 || value > 255) {
            return;
        }
        this.numb = (byte)(value - Byte.MIN_VALUE);
    }
    public byte get() {
        return this.numb;
    }
    public int getInt() {
        return this.numb + Byte.MIN_VALUE;
    }
}
```
Diese Klasse sollte gehen (tut sie hoffentlich auch). Aber wenn ich jz mit OutputStream.write(byte[] b) oder (byte b) etwas an den Server senden will wie bekomme ich da meine Klasse rein?
Nehmen wir an ich habe: {0xFF, 0x54, 0xBD, 0x4A, ...}, das will ich ich ein einem Wisch verschicken. Aber wie? Soll ich in einer for Stück für Stück senden? Nimmt der Server dieses Gestückle überhaupt an? Sowas wie

```
for(int i = 0; i < irgend_ein_uByte.length(); i++) {
    out.write(irgend_ein_uByte[i].get);
    // ODER \\
    out.write(irgend:ein_uByte[i].getInt);
}
out.flush();
```
Oder ist das genz falsch?
Irgendwie steh ich auf der Leitung?!?


----------



## beat84 (14. Mai 2007)

Ist doch egal ob es nicht bis 255 geht (in java gibts keine unsigned bytes)

Du brauchst dir deswegen keine eigene Klasse schreiben.

Er geht einfach ab 128 (oder 127, weiss jetzt net) bei -127 weiter.


----------



## beat84 (14. Mai 2007)

nochwas, die methode write(byte[] b) verlangt ein byte array als parameter folglich kannst du da deine Klasse gar nicht übergeben

write schreibt automatisch das ganze array in den stream, da brauchst du keine schleife


```
byte[] bytesToSend = {3,4,6,-12,0,122,-30};

out.write(bytesToSend);
out.close();
```
[/code]


----------



## Guest (15. Mai 2007)

Eine frage noch:
Angenommen ich schicke von Java (byte)-127 zu einem Server der unsignet Byte hat empfängt der dann 1 oder 129


----------



## HoaX (15. Mai 2007)

254 würde ich mal behaupten


----------



## Guest (16. Mai 2007)

Und wiseo? Gibts da eine Formel oder so?


----------



## HoaX (16. Mai 2007)

stell dir doch einfach die bits vor, bei signed ist das msb für das vorzeichen zuständig:
01111111 wäre 127
11111111 ware dann -128 bzw 255


----------



## kleiner_held (16. Mai 2007)

11111111 ist -1
und
10000000 ist -128

denn 
01111111 = 127      | // jetzt auf beiden Seiten +1
10000000 = -128   | //Ueberlauf

damit ist ein Java Byte von -127 gleich 129 als unsigned byte


----------



## Guest (17. Mai 2007)

Ok, das verstehe ich^^
Jetzt muss ich nur noch irgendwie das Hackerl herbekommen...


----------



## TimmyFresh (28. Mai 2007)

hab auch mal viel herumprobiert um ein unsigned integer hinzubekommen...und siehe da ich wurde fündig!

wenn du ein byte eines inputstreams interpretierst so wird dies als uINT ausgewertet....beduetet 0xFF=255 und nicht -128
lg timmy


----------

