Avatar billede solskinsvejr Nybegynder
17. december 2004 - 14:46 Der er 7 kommentarer og
1 løsning

Forklaring af HEX-konvertering

Hej Eksperter !

Har denne metode, som konverterer en fil til hex-repræsentation venligst lånt fra JavaWorld. Har dog et problem med at forstå linien i FOR-løkken (strXMLDoc.append(hexLookupTable[0xff & buffer[i]]);). Hvordan skal denne line forstås ? Det skal siges at hexLookupTable er et statisk array indeholdende hex-værdier.


public StringBuffer convertToHEX(String filename)
{
    //Der oprettes en StringBuffer
    StringBuffer strXMLDoc = new StringBuffer();
   
    try
    {
        //Læser en fil og lægger den i et byte-array
        byte[] buffer = readFile(filename);
       
        //Længden af det læste data fra filen
        int readBytes = buffer.length;
       
        //Intererer buffer-arrayet
        for (int i=0; i < readBytes; i++)
        {
            //
            strXMLDoc.append(hexLookupTable[0xff & buffer[i]]);
        }   
   
        System.out.println(strXMLDoc.toString());
    }
    catch (IOException e)
    {
        System.out.println("Our exception is: " + e);
    }
    return strXMLDoc;
}

TAK TAK :o)
Avatar billede arne_v Ekspert
17. december 2004 - 15:25 #1
Du tager hvert bostav ud af strengen, bruger & 0xFF til at få en værdi 0-255 ud af det
og bruger den som index i arrayet
Avatar billede arne_v Ekspert
17. december 2004 - 15:26 #2
& 0xFF er en bitvis AND med alle de 8 laveste bit sat d.v.s. at den bevarer de
laveste 8 bit i det man AND'er og sætter resten til 0
Avatar billede solskinsvejr Nybegynder
17. december 2004 - 15:27 #3
Øhh hvilken streng, vi flyver rundt i bits og bytes...
Avatar billede arne_v Ekspert
17. december 2004 - 15:31 #4
sorry det er ingen streng men et byte array

du tager hvert tegn ud af byte array

så er & 0xFF eneste funktion, at den konverterer byte værdier -128..127
til int værdier 0..255
Avatar billede solskinsvejr Nybegynder
17. december 2004 - 15:35 #5
Ok kan ikke lige se det for mig hvordan kan en del af en fil i et byte array blive f.eks -128? burde det ikke være 0011.0000 eller noget ligende?
Avatar billede arne_v Ekspert
17. december 2004 - 15:40 #6
alle hel tal data typer i Java er signed d.v.s. at et 8 bit hel tal (som er hvad byte
er) er -128..127 og ikke 0..255
Avatar billede solskinsvejr Nybegynder
17. december 2004 - 15:57 #7
Ok vi er blevet mere oplyst nu, tak skal du ha :-)

Smid et svar Arne.
Avatar billede arne_v Ekspert
17. december 2004 - 15:59 #8
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