tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von Kai008
  • 1 Beitrag von ZodiacXP
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
730
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von procurve
    procurve procurve ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    158
    Hi!

    Wie lese ich ein Integer aus einem byte[]-Array heraus, ohne einen ByteArrayInputStream zu verwenden?

    Folgendes habe ich versucht:
    Code java:
    1
    2
    
    byte[] patch = {0,0,0,42};
    int s = patch[0] << 24 + patch[1] << 16 + patch[2] << 8 + patch[3];

    Dabei ist s leider 0.

    Wo liegt der Fehler?
    Geändert von procurve (17.02.09 um 13:25 Uhr) Grund: überflüssige Klammern entfernt
     

  2. #2
    Avatar von procurve
    procurve procurve ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    158
    1. Fehler gefunden:
    << bindet schwächer als +, daher sind Klammern nötig:
    Code java:
    1
    2
    
    byte[] patch = {0,0,0,42};
    int s = (patch[0] << 24) + (patch[1] << 16) + (patch[2] << 8) + patch[3];

    Das nächste Problem ist, dass patch[x] ein vorzeichenbehaftetes byte ist. Wie bekomme ich aus diesem ein vorzeichenloses byte?
     

  3. #3
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    1
    procurve bedankt sich. 

  4. #4
    Registriert seit
    Mar 2004
    Beiträge
    1.854
    Blog-Einträge
    2
    Zitat Zitat von procurve Beitrag anzeigen
    Das nächste Problem ist, dass patch[x] ein vorzeichenbehaftetes byte ist. Wie bekomme ich aus diesem ein vorzeichenloses byte?
    Bin blutiger Anfänger aber vielleicht ein binäres UND mit 0xff. Dann erzwings du ja fast schon dass es Richtung int geht.
    Geändert von ZodiacXP (17.02.09 um 15:03 Uhr)
    procurve bedankt sich. 
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  5. #5
    Avatar von procurve
    procurve procurve ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    158
    Danke, schon was gefunden:

    Um aus einem byte ein unsigned byte zu machen wird folgendes gemacht:

    Code java:
    1
    2
    
    byte b = 211;
    int unsigned = b & 0xFF

    Damit ergibt sich aus meiner obigen Fragestellung der folgende Code:

    Code java:
    1
    2
    
    byte[] patch = {0,0,0,42};
    int s = ((patch[0] & 0xFF) << 24) + ((patch[1] & 0xFF) << 16) + ((patch[2] & 0xFF) << 8) + (patch[3] & 0xFF);

    Erledigt!
     

Ähnliche Themen

  1. [VC++ 6.0] Integer richtig nach BYTE casten ?
    Von vfl_freak im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 04.11.10, 11:56
  2. Konvertierung von Integer in Byte Array
    Von javaprogger1987 im Forum Java
    Antworten: 14
    Letzter Beitrag: 05.01.10, 21:09
  3. byte udn integer
    Von MinaM im Forum Java
    Antworten: 2
    Letzter Beitrag: 12.07.05, 13:11
  4. Integer to Byte
    Von Wolfsbein im Forum Java
    Antworten: 5
    Letzter Beitrag: 18.10.04, 13:17
  5. Byte & Integer
    Von polar im Forum Visual Basic 6.0
    Antworten: 14
    Letzter Beitrag: 30.10.02, 15:20