Byte Array inkrementieren

  • Themenstarter Gelöschtes Mitglied 10077
  • Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gelöschtes Mitglied 10077

Gast
hi zusammen,

da ich nicht weiter weiß, poste ich meine anfängerfrage mal, in der hoffnung, dass mich jmd hört :)



es schaut wie folgt aus.

ich habe einen "genullten" vorgegebenen byte array
Code:
byte[] code = new byte[5]; 

for (int j = 0; j < 5; j++) code[j] = 0
---------
da es ein kryptographie praktikum geht und der algorithmus etwas probieren muss
wird bei jedem fehlgeschlagenen vergleich der byte array inkrementiert.
bzw versuche ich das gerade zu implementieren

sprich, wenn ein vgl mit einem anderen codestück fehlschlägt, dann wird dieser array stellenweise inkrementiert, bis ich ein passendes stück selbstgenerierten "code" gefunden habe


das inkrementieren müsste also zbsp folgendes liefern:

[0,0,0,0,0] --> [0,0,0,0,1]
[0,0,0,0,255] --> [0,0,0,1,0]
[0,123,0,23,0] --> [0,123,0,23,1] usw..

frage ist, wie ich das anstelle, ohne 1 mio verschachtelte if und for schleifen zu benutzen
und ob es schon etwas dafür in java gibt


für jede antwort dankbar


buggi
 
G

Gelöschtes Mitglied 10077

Gast
hm

es geht mir ja nicht darum, dass die stellen verschoben werden,
sondern dass der gesamte array inkrementiert wird
 
G

Gelöschtes Mitglied 10077

Gast
momentan bin ich soweit:



Code:
	    	boolean inc = false;  /*steht auf true sobald inkrementiert wurde */
	    	for (int x=0; x < codeBlk.length; x++, inc = false){
	    		
	    		if (codeBlk[x] < 256) {
	    			codeBlk[x]++; 
	    			inc = true;
	    			}else {
	    				codeBlk[x]=0;
	    				}	
    		
	    	}



da ich aber noch totaler java anfänger bin, weiß ich nicht, obs das tut
da ich nicht jede stelle inkrementieren will, sondern nur 1 mal die nächste stelle, setze ich eine hilfsboolean direkt auf true, wenn inkrementiert wurde.
aber auch da bin ich nicht sicher, ob der for schleifeneinstieg stimmt. oder ob ich das einer for schleife überhaupt abverlangen kann.
ansonsten müsste der boolean check in die if mit rein. aber auch da habe ich die syntax für eine zweite bedingung nicht heraus gefunden
 
S

SlaterB

Gast
tja, ob es das nun gibt oder nicht kann nur der sagen, der weiß, dass es das gibt ;)

von mir nur die Meinung: kann ich mir nicht vorstellen,
ist ja auch mit wenigen Zeilen selber programmiert und dann hast du volle Kontrolle über weitere Features,

und noch ein Tipp:
byte geht von -128 bis +127

-------

zu deinem Code: von hinten (rechts im Array) anfangen!,
und wenn auf 0 gesetzt wird, dann die boolean-Variable nicht auf true setzen, weil ja das nächste Feld auch noch incrementiert werden muss
 

schalentier

Gesperrter Benutzer
SlaterB hat gesagt.:
und noch ein Tipp:
byte geht von -128 bis +127

Neee, byte is von 0..256 und char von -128 bis 127, oder?

/edit: Mein Fehler, byte geht doch von -128 bis 127 und char is 16 Bit lang (Unicode usw). Nimm am besten int...

Fang im Array von Hinten an, und zaehl die Zahl dort um 1 hoch. Is das dann 256, setzt du diese Stelle auf null und machst das gleiche fuer die Stelle davor. Das ganze im Loop bis zur 0. Stelle, ist die auch 256 bist du durch.
 

byte

Top Contributor
Du könntest die Bytes aber folgendermaßen unsigned interpretieren:

Code:
(int) b & 0xFF
 

Der Müde Joe

Top Contributor
nimm doch ein long ....nimm nur 40 bit ..also 5 * ein byte
und mach ein ++...

dann haste das gleiche ohne Array...
 

Der Müde Joe

Top Contributor
so als ansporn
Code:
long b = 512;
System.out.println((int)b & 0xFF);
b >>>= 8; //shift 8 bit
System.out.println((int)b & 0xFF);
b >>>= 8;
System.out.println((int)b & 0xFF);

sollte

0
2
0

ausgeben
 
G

Gelöschtes Mitglied 10077

Gast
problem ist, dass mein byte array über mehrere klassen hinweg fest implementiert ist. ich könnte das vllt typecasten und zurück casten usw..

aber das kann ich noch viel weniger, als das hier^^


danke für den tip mit dem true/false weiter oben.


nur stehe ich immernoch da, wo ich schon war:(
 

kleiner_held

Top Contributor
Du koenntest das Inkementieren deines Arrays rekursiv loesen:
Code:
public void increment(byte[] b)
{
   increment_rec(b, b.length - 1);
}

private void increment_rec(byte[] b, int pos)
{ 
    if (pos < 0)
    {
        throw new RuntimeException("Arrayueberlauf");
    }
    else if (b[pos] < Byte.MAX_VALUE)
    {
        b[pos]++;
    }
    else
    {
        b[pos] = 0;
        inecrement_rec(b, pos - 1);
    }
}

Das wuerde jeden Array index mit Werten zwischen 0 und 127 behandeln, wenn du [127, 127, 127, 127] incementierst knallts.
 
G

Gelöschtes Mitglied 10077

Gast
ihr habt alle samt geniale ansätze

aber ich nur ne vorgegebene klasse, an der ich an 1 stelle innerhalb 1 funktion ein paar zeilen einfügen soll, die unter anderem leisten, dass mein Byte Array inkrementiert wird


stellt euch einfach vor, dass ich einen array aus bytes habe
nun such ich einen algorythmus, der mir nach und nach via inkrekementieren jeden möglichen array bastelt.
ausgehend von [0,0,0,0], welchen ich bereits habe



:/
 

Der Müde Joe

Top Contributor
guck dir das mal an
Code:
public class Test{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		for(long i = 0 ; i < 500; i++){
			byte[] a= getArray(i);
			print(a);
		}
	}
	
	/**
	 * 0-127 normal
	 * 128 - 255 = -128 - 1
	 */
	public static byte[] getArray(long zahl){
		byte [] array = new byte[5];
		
		array[0] = (byte)(zahl & 0xFF);
		zahl>>>= 8;
		array[1] = (byte)(zahl & 0xFF);
		zahl >>>= 8;
		array[2] = (byte)(zahl & 0xFF);
		zahl >>>= 8;
		array[3] = (byte)(zahl & 0xFF);
		zahl >>>= 8;
		array[4] = (byte)(zahl & 0xFF);
		
		return array;
	}
	
	public static void print(byte[] b){
		for(byte c : b){
			System.out.print(c + " ");		
		}
		System.out.println("");
	}
}
 

schalentier

Gesperrter Benutzer
Die Speichersparversion:
Code:
public class ArrayInc {
    byte[] numbers;

    public ArrayInc(byte[] numbers) {
        this.numbers = numbers;
    }

    public void inc(){
        int pos=numbers.length-1;
        boolean stop = false;
        while(!stop && pos>=0 ) {
            int no = numbers[pos]&0xFF; // byte in "unsigned byte" umwandeln
            if( no<255 ) { // letzte stelle kann noch erhoeht werden?
                numbers[pos]++;
                stop = true; // dann fertig
            } else {
                numbers[pos]=0; // ansonsten auf 0 setzten und naechste stelle probieren
                pos--;
            }
        }
    }

    public String toString() {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < numbers.length; i++) {
            int number = numbers[i]&0xFF;
            if( i!=0 ) sb.append(",");
            sb.append(number);
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        byte[] nums = new byte[]{0,0,0,0};
        ArrayInc inc = new ArrayInc(nums);

        for( int i=0;i<10000;i++ ) {
            inc.inc();
            System.out.println(inc);
        }

    }
}
 
G

Gelöschtes Mitglied 10077

Gast
ui genial

und hast du vllt noch ne ahnung, warum

Code:
	    	if (codeBlk[codeBlk.length] < 127){
	    		codeBlk[codeBlk.length]++;
	    	}
mir eine java.lang.ArrayIndexOutOfBoundsException: 31
codeBlk ist ein byteArray
und via system out println, seh ich dass codeBlk.length = 32 ist
es muss daran liegen, dass ich so nicht im byte array inkrementieren kann. und wenn ich statt dessen:

codeBlk[codeBlk.length] = codeBlk[codeBlk.length]+1;

oder ähnliches versuche, führt das auch zu nichts.. :(
 
G

Gelöschtes Mitglied 10077

Gast
Code:
if (codeBlk[codeBlk.length-1] < 127){
             codeBlk[codeBlk.length-1]++;
          }

habs damit nun scheinbar mehr oder weniger zum laufen gebracht. jedoch weiß ich nicht, ob ich damit noch das letzte byte im array erreiche
 
G

Gelöschtes Mitglied 10077

Gast
habe deinen kommentar zu spät gesehen
danke für deine mühen :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
G ImageIcon in Byte-Array ablegen Java Basics - Anfänger-Themen 7
S Byte-Array kann chars speichern? Java Basics - Anfänger-Themen 3
N Datentypen Image zu Byte-Array Java Basics - Anfänger-Themen 4
D Methoden int to byte array und zurück? Java Basics - Anfänger-Themen 5
F Byte Array wachsen lassen Java Basics - Anfänger-Themen 5
F Teil eines Byte Array an eine Methode übergeben Java Basics - Anfänger-Themen 5
M sehr großes Byte Array Java Basics - Anfänger-Themen 3
M Byte Array und Co. Java Basics - Anfänger-Themen 12
F Hexfolge in Byte Array ersetzen Java Basics - Anfänger-Themen 8
H Variablen 32bit Zählwert als Byte-Array Java Basics - Anfänger-Themen 9
M byte Array Mindestlänge Java Basics - Anfänger-Themen 19
D [jni] jbytearray <-> byte array Java Basics - Anfänger-Themen 8
P byte Array aus ImageIcon Java Basics - Anfänger-Themen 10
V Jar-Datei von Byte-Array oder Stream laden? Java Basics - Anfänger-Themen 9
H Datentypen Byte-Array RSA Java Basics - Anfänger-Themen 9
H Datentypen Rechnen mit signed Byte-Array - unsinged byte Java Basics - Anfänger-Themen 3
M Byte Array: Werte größer 127? Java Basics - Anfänger-Themen 11
H Datentypen Byte-Array aus Stream lesen Java Basics - Anfänger-Themen 3
S Unbekannte Daten einlesen, speichern und in einem byte Array speichern Java Basics - Anfänger-Themen 3
S Alle Datentypen in byte Array und zurückwandeln Java Basics - Anfänger-Themen 2
J Byte-Array als Hex-Datei speichern? Java Basics - Anfänger-Themen 9
J String array to byte array Java Basics - Anfänger-Themen 8
G SHA (byte array) per modulo hashen Java Basics - Anfänger-Themen 6
K Byte-Array als Zeichenfolge ausgeben Java Basics - Anfänger-Themen 3
G byte array in integer konvertieren Java Basics - Anfänger-Themen 15
mwildam Byte array oder String Java Basics - Anfänger-Themen 4
P InputStream in Byte-Array speichern Java Basics - Anfänger-Themen 2
U byte array in datei 'dumpen' / speichern Java Basics - Anfänger-Themen 2
H String in Byte Array wandeln Java Basics - Anfänger-Themen 25
H von und in byte array wandeln Java Basics - Anfänger-Themen 8
D Byte-Array zu Hex-String umwandeln Java Basics - Anfänger-Themen 3
G Konvertierung Byte Array Java Basics - Anfänger-Themen 4
tobiasbeil Von Datei byte für byte lesen und in ein Array einfügen. Java Basics - Anfänger-Themen 11
G Byte-Array Infos speichern Java Basics - Anfänger-Themen 14
F char to byte array Java Basics - Anfänger-Themen 8
S byte-array bitweise auslesen Java Basics - Anfänger-Themen 14
G Char oder Byte Array mit unbekannter länge erstellen? Java Basics - Anfänger-Themen 1
T XML Parsen und Inhalt in ein Byte Array schreiben Java Basics - Anfänger-Themen 3
C Byte-Array mit Dateiinhalt füllen Java Basics - Anfänger-Themen 7
G 4-stelliges-Byte-Array in Integer umwandeln geht das? Java Basics - Anfänger-Themen 10
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
T IOStreams read(byte[]b) methode Java Basics - Anfänger-Themen 2
I Dateigröße von einem InputStream oder byte[] bekommen Java Basics - Anfänger-Themen 2
D Best Practice Parameter int vs byte Java Basics - Anfänger-Themen 16
J RSA Verschlüsselung Testen / byte[] in Objekt umwandeln Java Basics - Anfänger-Themen 1
M Datentypen Byte, Float und Boolean Java Basics - Anfänger-Themen 13
F byte, short oder doch int? Java Basics - Anfänger-Themen 6
S Performance von byte[], short[], int[]..? Java Basics - Anfänger-Themen 24
P int zu byte Java Basics - Anfänger-Themen 8
M Java Klasse Byte Java Basics - Anfänger-Themen 10
F Byte Ausgabe plötzlich falsch Java Basics - Anfänger-Themen 0
V String in Byte umwandeln Java Basics - Anfänger-Themen 11
O Input/Output Ein (negatives) Byte über PrintWriter hinausschreiben Java Basics - Anfänger-Themen 3
T byte[] zu String mit Sonderzeichen Java Basics - Anfänger-Themen 2
W Nullpointer bei Objekt Serialisierung mit ArrayList<byte[]> etc. Java Basics - Anfänger-Themen 2
J byte - Ausgabe Java Basics - Anfänger-Themen 2
S byte to float Java Basics - Anfänger-Themen 4
J Byte Folge erkennen Java Basics - Anfänger-Themen 5
T Operatoren Float in byte umwandeln Java Basics - Anfänger-Themen 3
Y File to byte[] and byte[] to sysout Java Basics - Anfänger-Themen 3
P Wann Byte-Stream und wann Character-Stream? Java Basics - Anfänger-Themen 11
P String in byte konvertieren, wie? Java Basics - Anfänger-Themen 4
T Erste Schritte Byte Java Basics - Anfänger-Themen 3
R byte[] zu String und Ausgabe Java Basics - Anfänger-Themen 2
H Variablen short <-> byte[] Java Basics - Anfänger-Themen 15
X Datentypen String in byte[] Java Basics - Anfänger-Themen 29
H Variablen string nach byte Java Basics - Anfänger-Themen 12
B Frage zur Effizienz von read und read(byte[]) Java Basics - Anfänger-Themen 23
R Erste Schritte Rechnenoperationen mit byte, short und char Java Basics - Anfänger-Themen 8
V Datentypen Frage zum Datentyp Byte Java Basics - Anfänger-Themen 11
L Byte[] to String, doch bits sind gespiegelt (MSB/LSB) Java Basics - Anfänger-Themen 3
S Von byte[] nach String zurueck nach byte[]. Arrays sind nicht identisch :( Java Basics - Anfänger-Themen 6
S ArrayList<Byte> in String umwandeln Java Basics - Anfänger-Themen 5
V unsigned byte? Java Basics - Anfänger-Themen 27
U short[] nach byte[] Java Basics - Anfänger-Themen 11
S Datentypen Ändern eines byte[] Arrays Java Basics - Anfänger-Themen 4
B byte-weise Verschlüsselung Java Basics - Anfänger-Themen 6
S Input/Output String in byte umwandeln? Java Basics - Anfänger-Themen 5
F von Byte zu 2 Stellig Hex Java Basics - Anfänger-Themen 3
G byte[] (Base64) korrekt übergeben Java Basics - Anfänger-Themen 4
O 64bit- OS byte, short, int oder long bzw. float oder double? Java Basics - Anfänger-Themen 13
G Binär in Byte speichern Java Basics - Anfänger-Themen 7
T Datentypen byte -Division..mal gehts mit cast mal ohne Java Basics - Anfänger-Themen 5
T Datentypen default ist int, cast zu byte nötig... Java Basics - Anfänger-Themen 2
F Byte nach Zahl umwandeln Java Basics - Anfänger-Themen 11
E Datentypen type cast problem (int, byte,) Java Basics - Anfänger-Themen 5
T Datentypen unsigned byte? Java Basics - Anfänger-Themen 9
G Integar zu Byte Java Basics - Anfänger-Themen 4
P Byte mit 0...255? Java Basics - Anfänger-Themen 5
N Datentypen Fehler beim Umwandeln in byte Java Basics - Anfänger-Themen 3
L Umwandlung int <--> byte Java Basics - Anfänger-Themen 2
L Datentypen 250 und byte? Java Basics - Anfänger-Themen 4
L Datentypen byte[] in String und wieder zurück Java Basics - Anfänger-Themen 3
N Files mit Byte an Socket versenden Java Basics - Anfänger-Themen 2
V Byte -> String -> Byte verlustfrei Java Basics - Anfänger-Themen 12
Hindi93 Byte to Int Java Basics - Anfänger-Themen 4
H Datentypen byte[] to int Java Basics - Anfänger-Themen 9
S hex zu byte Java Basics - Anfänger-Themen 4
S Addition zweier 32 Byte langer ByteArrays Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben