tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
229
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    jabonva jabonva ist offline Rookie
    Registriert seit
    Feb 2007
    Beiträge
    6
    Hallo,

    ich möchte aus einem vierstelligen Bytefeld einen achtstelligen Hexstring erzeugen und diesen anschließend in einen Dezimalwert umrechnen. Das Codebeispiel stellt meinen Weg dar, um das Ziel zu erreichen. Ich vermute jedoch, daß dieser Weg nicht der effizienteste ist, da langsam. Wer kennt einen besseren Weg?

    Gruß
    jabonva
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    public class test
    {
        public static void main( String[] args )
        {
            //Ausgangssituation (hex->00000100; dez->256)
            byte[] data = new byte[4];
            data[0] = 0;
            data[1] = 1;
            data[2] = 0;
            data[3] = 0;
     
            //aus data wird ein hexString erstellt
            String a = Integer.toHexString(data[0]);
            if ( a.length() == 1 ) a = new String("0"+a);
            String b = Integer.toHexString(data[1]);
            if ( b.length() == 1 ) b = new String("0"+b);
            String c = Integer.toHexString(data[2]);
            if ( c.length() == 1 ) c = new String("0"+c);
            String d = Integer.toHexString(data[3]);
            if ( d.length() == 1 ) d = new String("0"+d);
            String hexString = new String(d+c+b+a);
     
            //Hexstring (00000100) nach Dezimal (256)
            int number = Integer.parseInt(hexString, 16);
        }
    }
     

  2. #2
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    wenn ich Dich richtig verstehe, suchst Du wohl sowas :
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    public static int makeInt(byte[] aByte) 
    {
        int nRes = 0;
        try 
        {
            nRes =   (toUnsignedInt(aByte[0]) 
                   | ( (toUnsignedInt(aByte[1])) << 8) 
                   | ( (toUnsignedInt(aByte[2])) << 16) 
                   | ( (toUnsignedInt(aByte[3])) << 24) );
        }
        catch (Exception ex) 
        {}
        return nRes;
    }

    Gruß
    Klaus
    Geändert von vfl_freak (29.03.10 um 07:59 Uhr) Grund: Tippfehler im Klammerung
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  3. #3
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    Hallo,

    alternativ könnte man auch einen ByteBuffer verwenden:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    import java.nio.ByteBuffer;
    import java.nio.ByteOrder;
     
    public class test {
        public static void main(String args[]) {
            //Ausgangssituation (hex->00000100; dez->256)
            byte[] data = new byte[4];
            data[0] = 0;
            data[1] = 1;
            data[2] = 0;
            data[3] = 0;
            
            ByteBuffer bb = ByteBuffer.wrap(data);
            bb.order(ByteOrder.LITTLE_ENDIAN);
            int number = bb.getInt();
            System.out.println(number); // => 256
        }
    }

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

Ähnliche Themen

  1. Byte* nach Char* casten
    Von WorldRacer im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 07.07.09, 21:59
  2. Byte nach Binär-String
    Von woezelmann im Forum Java
    Antworten: 1
    Letzter Beitrag: 22.02.08, 15:08
  3. VB .net: structure nach byte array für DLL
    Von Tensi im Forum .NET Application und Service Design
    Antworten: 0
    Letzter Beitrag: 29.07.07, 15:20
  4. Sbyte nach Byte konvertieren
    Von Chrono im Forum .NET Café
    Antworten: 11
    Letzter Beitrag: 30.07.06, 22:06
  5. Wandeln von BYTE nach BOOL
    Von salma im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 21.01.05, 15:51