Avatar billede bris Nybegynder
02. februar 2004 - 16:09 Der er 5 kommentarer

byte[] convert til long/int

Hej. Det er sikkert et meget simpelt spørgsmål. Jeg har nogle bytes, som jeg gerne vil konvertere til en long, eller en int. Hvordan gør jeg det?
Avatar billede chries Nybegynder
02. februar 2004 - 16:17 #1
Prøv
int parameterValue = ((data[0] & 0xff) << 24) | ((data[1] & 0xff) << 16) | ((data[2] & 0xff) << 8) | (data[3] & 0xff);
Avatar billede chries Nybegynder
02. februar 2004 - 16:18 #2
forudsat den er gemt binært i dit array og ikke som '1', '2', '3' for 123 :)
Avatar billede arne_v Ekspert
02. februar 2004 - 16:35 #3
if (littleEndian) {
            result = (int) (byteToInt(data[position]) |
                            (byteToInt(data[position + 1]) << 8) |
                            (byteToInt(data[position + 2]) << 16) |
                            (byteToInt(data[position + 3]) << 24));
        } else {
            result = (int) (byteToInt(data[position + 3]) |
                            (byteToInt(data[position + 2]) << 8) |
                            (byteToInt(data[position + 1]) << 16) |
                            (byteToInt(data[position]) << 24));
        }
        position += 4;

hvor:

    private static int byteToInt(byte b) {
        return (int) (0xFF & (short) b);
    }

kan håndtere både big endian og little endian.
Avatar billede arne_v Ekspert
02. februar 2004 - 16:39 #4
chrieses kode er til big endian
Avatar billede arne_v Ekspert
02. februar 2004 - 16:40 #5
Hvis man altid skal brug big endian og performance ikke er krutisk kan man
bruge:

DataInputStream dis = new DataInputStream(new ByteArrayInputStream(data));

og dis.readInt()
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