tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
238
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    soeni1987 soeni1987 ist offline Mitglied Silber
    Registriert seit
    Mar 2006
    Beiträge
    79
    Huhu,

    ich habe folgendes Problem und stelle mich zu doof an.

    Ich habe ein Bytearray welches aus einer Datei eingelesen wurde. Ist 190kb groß

    Als Beispiel sagen wir es wäre 2 Bytes groß

    0xaa
    0x55

    jetzt möchte ich alle Bytes aufsummieren (den Überlauf nutzen)

    0xaa + 0x55 = 0x36

    Wie mach ich das? wenn ich das einfach aufsummiere bekomme ich -1 raus.
     

  2. #2
    SE Tutorials.de Gastzugang
    Ähm ... nur so am Rand die Frage : was genau hast du damit vor ? Eine Checksumme bilden ? Das geht in Java *und auch anderen Sprachen* deutlich einfacher als da auf Byte-Ebene mit irgendwelchen Pufferüberläufen zu arbeiten.

    Ansonsten sei dir gesagt : wenn du den Überlauf ausnutzen willst musst du eine eigene Rechenmethode schreiben die dies macht. Da es in Java unüblich ist ein solches Verhalten gezielt zu bekommen ist Java dagegen halbwegs gesichert und lässt sich so einfach nicht dazu überreden soetwas zuzulassen.
     

  3. #3
    soeni1987 soeni1987 ist offline Mitglied Silber
    Registriert seit
    Mar 2006
    Beiträge
    79
    wie geht das besser? es muss aber eine Checksumme sein, die Byteweise aufaddiert, kein crc oder so
     

  4. #4
    SE Tutorials.de Gastzugang
    Und warum muss es ausgerecht eine solche Methode sein ? Warum nimmst du nicht einfach einen standardtisierten Hash-Algorythmus wie SHA-256 ?
    Außerdem wären es noch zu wenig Infos um eine halbwegs vernüftige Methode schreiben zu können. Mindestens bräuchte man noch :
    1) Grundwerte mit denen begonnen wird zu Hashen
    2) Hash-Breite - wie viele Bytes hat der Hash ?
    3) Operationen pro Runde - was wird wann wie genau gerechnet ?
    4) Padding - wie sollen die Input-Daten auf entsprechende Block-Länge gebracht werden wenn die Anzahl an Input-Bytes nicht restlos durch die Hash-Breite teilbar ist ?

    Du siehst : es bedarf schon etwas mehr als einfach nur : möchte alle Bytes eines InputStreams mit Werteüberlauf addieren.
     

  5. #5
    soeni1987 soeni1987 ist offline Mitglied Silber
    Registriert seit
    Mar 2006
    Beiträge
    79
    Ich möchte nicht hashen. Nur die bytes aufaddieren. Jedoch als unsigned. Ich brauch das u m das in eine Datei zu schreiben welche ein anderes Programm öffnet.
     

  6. #6
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.503
    Hi

    Ohne jetzt den Rest gelesen zu haben: In Java gibt es kein unsigned

    Und was ist am Aufsummerien selber das Problem?
    Schleife duch und fertig.

    edit:
    Noch was:
    0xaa+ 0x55 ist -1
    ...das "Problem" im Anfangspost ist also nur ein Rechenfehler von dir.

    0xaa=170
    0x55=85

    170+85=255

    255=0xff
    Als signed -1

    Gruß
     

  7. #7
    SE Tutorials.de Gastzugang
    @sheel
    made my day

    @TO
    Ich verstehe immer noch nicht was du mit AUFSUMMIEREN meinst.
    In Java sind alle Datentypen Vorzeichenbehaftet *wie sheel sagte : es gibt kein unsigned*. Das ist in ungefähr das was ich in meinem Post meinte : in Java ist es nicht ohne weiteres möglich den Überlauf zu nutzen da Java auf Grund des signed dagegen gesichert ist. Wie du bei 0x55 + 0xaa auf 0x36 kommst möchte ich dann aber bitte auch mal vorgerechnet bekommen.

    Und wie gesagt : eine ganze Datei ... egal ob jetzt nur wenige kB oder mehrere MB mit einer Methode *wie auch immer* so "zusammenzurechnen" das man am Ende nur ein einziges Byte hat ... dahinter erschließt sich mir der Sinn nicht wirklich.

    Auch ist der Titel irre führend. Wenn du von "Checksum" redest dann meinst du ein Hash-Verfahren, denn Checksum ist die Bezeichnung für das Ergebnis der Hash-Funktion.

    Wenn du uns also jetzt noch mal genauer erklärst was genau du willst und was dabei rauskommen soll können wir dir vielleicht helfen, midestens aber brauchen wir jedoch die 4 von mir angesprochenen Punkte da 1 Byte nun mal nur 8 Bit hat und sich daraus rechnerisch auch nur 256 Permutationen ergeben dürftest du relativ schnell auf Kollisionen treffen.
     

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 22.02.10, 12:05
  2. Zip und unzip von byte-Array
    Von Szdnez im Forum Java
    Antworten: 2
    Letzter Beitrag: 08.09.09, 09:24
  3. String -> Byte Array
    Von MonkDoc im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 13.05.07, 13:56
  4. byte [] - Array reseten
    Von bladich im Forum Java
    Antworten: 3
    Letzter Beitrag: 24.11.06, 15:58
  5. Byte Array zurechtschneiden
    Von Nikon the Third im Forum .NET Archiv
    Antworten: 3
    Letzter Beitrag: 24.01.05, 18:14