java die Umwandlung von int zu short

Ich bin die Berechnung der 16 bit-Prüfsumme über meine Daten, die ich brauche zu senden an server, wo es neu berechnen und übereinstimmung mit der mitgelieferten Prüfsumme. Prüfsumme Wert, bin ich immer in int, aber ich habe nur 2 bytes für das senden der Wert.Also ich bin casting int zu short beim Aufruf shortToBytes Methode. Dies funktioniert gut, bis zum checksum-Wert ist kleiner als 32767 danach bin ich immer negative Werte.

Sache ist java keine unsigned-primitiven, so bin ich nicht in der Lage zum senden von Werten größer als max-Wert des signierten short erlaubt.

Wie kann ich dies tun, konvertieren von int zu short und über das Netzwerk senden, ohne sich Gedanken über das abschneiden und unterschrieben & unsigned int.

Auch auf der Seite hab ich das java-Programm läuft.

   private byte[] shortToBytes(short sh) {
        byte[] baValue = new byte[2];
        ByteBuffer buf = ByteBuffer.wrap(baValue);
        return buf.putShort(sh).array();
    }

    private short bytesToShort(byte[] buf, int offset) {
        byte[] baValue = new byte[2];
        System.arraycopy(buf, offset, baValue, 0, 2);
        return ByteBuffer.wrap(baValue).getShort();
    }
InformationsquelleAutor changed | 2010-03-21
Schreibe einen Kommentar