Avatar billede tetrix Nybegynder
14. januar 2010 - 17:47 Der er 4 kommentarer og
1 løsning

Big-endian i Java (2)

Well, arne gav mig dette eksempel, hvor s er stringet der skal laves om til big-endian.

        byte[] bbig = new byte[1000];
        ByteBuffer bbbig = ByteBuffer.wrap(bbig);
        bbbig.order(ByteOrder.BIG_ENDIAN);
        for(int i = 0; i < s.length(); i++) {
            bbbig.putChar(s.charAt(i));
        }
        for(int i = 0; i < bbbig.position(); i++) {
            System.out.printf(" %02X", bbig[i]);
        }

Det virkede dog ikke helt som den funktion jeg havde lavet i VB.NET.

    Public Function toBigEndian(ByVal i As Integer)
        Dim abyt() As Byte = BitConverter.GetBytes(i)
        If BitConverter.IsLittleEndian Then
            Array.Reverse(abyt)
        End If
        Return abyt
    End Function

Mit spørgsmål er nu, kan en eller anden give mig et eksempel på, hvordan jeg laver en tilsvarende funktion i Java? Tak :-)
Avatar billede arne_v Ekspert
14. januar 2010 - 18:17 #1
Jeg kan godt huske spoergsmaalet. Men jeg treoede at det var chars du ville have konverteret.

En int kan konverteres tilsvarende.

    public static byte[] toBigEndian(int i) {
        byte[] bbig = new byte[4];
        ByteBuffer bbbig = ByteBuffer.wrap(bbig);
        bbbig.order(ByteOrder.BIG_ENDIAN);
        bbbig.putInt(i);
        return bbig;
    }
Avatar billede arne_v Ekspert
14. januar 2010 - 18:26 #2
Man kunne ogsaa konvertere manuelt.

    public static byte[] toBigEndian(int i) {
        byte[] bbig = new byte[4];
        bbig[0] = (byte) ((i >> 24) & 0xFF);
        bbig[1] = (byte) ((i >> 16) & 0xFF);
        bbig[2] = (byte) ((i >> 8) & 0xFF);
        bbig[3] = (byte) (i & 0xFF);
        return bbig;
    }
Avatar billede tetrix Nybegynder
14. januar 2010 - 19:00 #3
Ah kan godt se at det var min fejl, jeg beklager meget :)

Hvis du skulle være nysgerrig, er det til en chat client :-) Smid et svar.
Avatar billede arne_v Ekspert
14. januar 2010 - 19:22 #4
Hvis du bruger en socket i en protokol som er konsekvent network order (big endian), saa var det muligvis nemmest at wrappe din OutputStream og InputStream i en DataOutputStream og DataInputStream.
Avatar billede arne_v Ekspert
14. januar 2010 - 19:22 #5
Og et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester