Ich brauche einen smarten Ansatz

MoxxiManagarm

Top Contributor
Hallo zusammen,

ich entwickele gerade eine Schnittstelle zu einem USB Gerät. Ich bekommen von dieser Schnittstelle ein byte-Array b, welches ich zu einem String umwandele.

Java:
new String(b, Charset.forName("utf-8"))

Das funktioniert soweit, alles ist gut. Mein Problem ist, dass dieses byte Array einzelne bytes hat, die als Trennzeichen und gleichzeitig Identifier für die darauffolgenden bytes dient, welche Klartext sind. Wenn z.B. 0x87 gefunden wird, ist alles was darauf folgt ein Name bis zum nächsten Identifier. Eine Liste der Identifier liegt natürlich vor, jedoch ist die Reihenfolge nicht zwingend immer die Gleiche.

Wie würdet ihr hier am ehesten vorgehen? Alle möglichen Ansätze die ich bisher in meinem Kopf hatte wirkten irgendwie umständlich und altbacken.

Ein paar Vorschläge würden mich sehr freuen
VG MM
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Ganz grob:
Mit einer Schleife drüber laufen, dabei testen ob ein byte ein Identifier ist.
Wenn nein, das aktuelle Byte einer Liste hinzufügen
Wenn ja, ergibt der aktuelle Listeninhalte ein "Wort" und kann irgendwo gespeichert werden


Oder wenn man mehr abstrahieren will:
'ne Split-Funktion für Arrays, die alle Identifier bekommt und an denen das Array teilt. Ergibt dann ein Array von Arrays, in den inneren Arrays ist das erste byte der Identifier und der Rest das "Wort" (oder alternativ direkt in eine Liste von Tupeln (Identifier, Wort) splitten)
 

mihe7

Top Contributor
Damit ich das richtig verstehe: es gibt ein Byte das sowohl Trennzeichen als auch Identifier ist. Woher weißt Du, ob es ein Trennzeichen ist?
 

White_Fox

Top Contributor
Ich hab das auch so verstanden, daß ein Identifier gleichzeitig auch Trenner ist.

Ich hab keine Ahnung was dahinter steckt, aber ich halte die Implementierung für schwach...sowas fällt E-Technikstudenten, die Hardware bauen, meist als erstes ein. Ein Problem ist z.B., daß 0x87 nicht mehr in den Daten auftauchen darf. Blöd, wenn man dann aber z.B. Integer übertragen will, wo ein Byte diesen Wert annehmen könnte.
Vielleicht reicht es ja auch, aber auf den ersten Blick ist das eine unschöne Sache, da bessere Protokolle nicht komplizierter sind (auch für einfache Mikrocontroller).

Wenn es schicker sein soll als eine schnöde Schleife: Ich würde mir einen IOStream daraus bauen, der die Nutzdaten einzeln ausgibt und die Splittung intern vornimmt. Dazu eine Methode identifierNext(), die ein Enum auswirft um das nächste Nutzdatum zu klassifizieren.
 

mrBrown

Super-Moderator
Mitarbeiter
Ich hab keine Ahnung was dahinter steckt, aber ich halte die Implementierung für schwach...sowas fällt E-Technikstudenten, die Hardware bauen, meist als erstes ein. Ein Problem ist z.B., daß 0x87 nicht mehr in den Daten auftauchen darf. Blöd, wenn man dann aber z.B. Integer übertragen will, wo ein Byte diesen Wert annehmen könnte.
Wenn vor jedem Wert ein Identifier steht, dürften Integer kein Problem sein, haben ja ne feste Länge. Problem sind doch nur Werte unbekannter Länge, dürften nur Stings sein, und wenn man das auf Ascii begrenzt bleibt noch alles ab 0x80 für Identifier übrig.
 

mihe7

Top Contributor

MoxxiManagarm

Top Contributor
Eigentlich saß ich im Biergarten ^^ ich merke es war vielleicht nicht ganz verständlich. Der Einfachheit halber seien die Trennzeichen im unteren Beispiel druckbare Zeichen.

!vorname&nachname%geburtstag#straße....

Das ! Indiziert dass alle Zeichen danach bis & zum Vornamen gehören. Je gesagt, die Reihenfolge ist aber nicht gesetzt. Es könnte genauso gut sein:

%geburtstag#straße&nachname!vorname...

Die Trennzeichen werden nie nochmal auftauchen, denn das sind keine druckbaren Zeichen. Der Inhalt hingegen ist immer druckbar
 

White_Fox

Top Contributor
Wie gesagt: IOStream, der die Splittung intern vornimmt und die Daten ausgibt. Zusätzlich mit einer Methode, die mit einem Enum anzeigt was für ein Datum als nächstes kommt.

So habe ich jedenfalls mal eine ähnliche Aufgabe gelöst. War ganz nett, da der Stream auch als Speicher herhalten konnte.
 

MoxxiManagarm

Top Contributor
Meine Frage hat sich im übrigen erledigt. Ich habe nämlich etwas übersehen. Es gibt noch ein weiteres Byte, welches mir die Länge des Datensatzes angibt. Also sinngemäß

!5Moxxi&8Managarm...

Damit ist das Ganze straight forward

Danke euch dennoch, war lustig wieder von euch zu lesen bei meinem kurzen Ausflug zurück in die Java Welt :cool:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Robert Zenz Ich brauche bitte mal kurz einen Sanity/Reality-Check betreffend Tests. Allgemeine Java-Themen 9
M Brauche einen Tipp, bei einer Aufgabe ! Allgemeine Java-Themen 3
S Ich Brauche Bei Einen Bot Hile :( Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
_user_q Was brauche ich, um eine eigene "Search for updates"-Funktion einzubauen? Allgemeine Java-Themen 1
RalleYTN Brauche Hilfe beim Run-Length-Decoding Allgemeine Java-Themen 9
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
Thallius Unfassbarer Fehler. Brauche Ideen zum Debuggen Allgemeine Java-Themen 9
J Unvorhersehbares Verhalten - benutze ich die falsche Bedingungsprüfung oder brauche ich Threads? Allgemeine Java-Themen 12
H NetBeans geotools 15 oder 16 - welche Abhängingkeiten gibt es? Welche Jars brauche ich? Allgemeine Java-Themen 4
S Best Practice Brauche eine Idee für eine Java Projekt! Allgemeine Java-Themen 11
M Brauche Hilfe bei Quellcodeverständnis Allgemeine Java-Themen 4
D Brauche Hilfe bei Rechnung (Exponentiation) Allgemeine Java-Themen 12
F Brauche Hilfe bei Java Allgemeine Java-Themen 6
C Brauche Hilfe mit Modulo Strategie Allgemeine Java-Themen 2
S Brauche Hilfe: Prüfungsaufgabe Java Allgemeine Java-Themen 8
Fu3L Input/Output Brauche Rat bei effizienter Speicherung großer Datenmengen Allgemeine Java-Themen 21
S brauche Hilfe für ssh connection in java Allgemeine Java-Themen 6
T Ich brauche gute Quellen Allgemeine Java-Themen 13
S Brauche Hilfe bei Planung für JAVA-Programm Allgemeine Java-Themen 3
hdi GUI: Ich brauche ein Textfeld mit "Sperre" Allgemeine Java-Themen 12
Developer_X Brauche Hilfe bei meinem kleinen hilfsprogramm Allgemeine Java-Themen 4
Developer_X Bound Animation - Brauche Hilfe Allgemeine Java-Themen 3
E brauche schnell Ausführbare Datei Allgemeine Java-Themen 4
D Brauche mal Hilfe bin noch nicht so fit Allgemeine Java-Themen 3
M brauche grösseren Datentyp Allgemeine Java-Themen 5
L Brauche Hilfe bei Memory Programmierung Allgemeine Java-Themen 2
N Brauche dringend Hilfe! Allgemeine Java-Themen 7
S brauche dringend help bei einem projekt (Römisch-dezimal) Allgemeine Java-Themen 3
M brauche hilfe mit iReport Allgemeine Java-Themen 4
P Java Acces Datenbank Problem ! (Brauche eine Abfrage) Allgemeine Java-Themen 5
E Ich brauche euren Code Allgemeine Java-Themen 12
V Brauche dringend Hilfe. Object-handling Allgemeine Java-Themen 4
V Brauche Beratung in Sachen Java+Datenbank+Web Allgemeine Java-Themen 8
M Schätzfrage: Wieviel Prozessorpower brauche ich? Allgemeine Java-Themen 27
R Hilfe - brauche ein Applet zu Demozwecken Allgemeine Java-Themen 10
J Brauche Hilfe zum ToolKit Allgemeine Java-Themen 15
K Brauche Hilfe bei Simulation einer Flugkurve . Allgemeine Java-Themen 14
T Brauche Hilfe! Allgemeine Java-Themen 10
T Lizenzfrage - brauche Infos Allgemeine Java-Themen 34
T Autostart Programm - brauche Tipps Allgemeine Java-Themen 5
G Brauche hilfe bei JMF: Wie eigene Streaming Data Source! Allgemeine Java-Themen 4
N int[] referenzen in ein Array packen, brauche Hilfe. Allgemeine Java-Themen 7
A brauche schnelle antwort wg. schleife! Allgemeine Java-Themen 3
T Brauche Hilfe bei ClassLoader Allgemeine Java-Themen 2
K Brauche euren Lösungsweg zu einem File/IO-Beispiel Allgemeine Java-Themen 23
G Brauche Hilfe bei Erstellung eines Musters! Allgemeine Java-Themen 3
G packageproblem? brauche rat! Allgemeine Java-Themen 2
S brauche Orientierungshilfe in Java Allgemeine Java-Themen 5
Z Was brauche ich für Servlets? Allgemeine Java-Themen 17
S Static + Speicher + Bytecode etc. Brauche HILFE :/ Allgemeine Java-Themen 11
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
R Wie gestaltet man einen Authentifizierungsflow? Allgemeine Java-Themen 6
berserkerdq2 Jemand einen Tipp wie man ein Javafx-Hintergrund "dynamisch" macht Allgemeine Java-Themen 3
berserkerdq2 Text über einen Shape anzeigen (Scenebuilder) Allgemeine Java-Themen 1
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
A verschachtelte for-Schleife in einen Stream umwandeln? Allgemeine Java-Themen 4
N Wie mache ich einen UnitTest? Allgemeine Java-Themen 16
D Klassendesign für einen Pascal Interpreter Allgemeine Java-Themen 6
Jose05 Gibt es einen Nachteil bei dem JDK 8? Allgemeine Java-Themen 7
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
O Warum kann ich so keine Elemente löschen und erhalte einen IllegalStateException? Allgemeine Java-Themen 4
M Schleife für einen TicTacToe Computer Allgemeine Java-Themen 5
N Validator für einen SQL-Befehl Allgemeine Java-Themen 22
ZH1896ZH Best Practice Wie erstellt man am besten einen Kalender? Allgemeine Java-Themen 3
R Java Stream: Ist es möglich, einen stream zusammenzufassen Allgemeine Java-Themen 6
Zrebna FileUtils.cleanDirectory() - aber einen sub-Ordner "verschonen" Allgemeine Java-Themen 1
MiMa Datei verschieben hat einen Fehler?? Allgemeine Java-Themen 20
L Generator für einen Parser implementieren Allgemeine Java-Themen 13
W Haben Konstruktoren in Java eigentlich immer mindestens einen Parameter? Allgemeine Java-Themen 4
J Wie kann ich von Vornherrein einen Fokus auf ein Objekt entfernen? Allgemeine Java-Themen 3
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
A Mithilfe von einer Nummer einen Namen finden n-Beziehung Allgemeine Java-Themen 8
B Long in einen Double umwandeln und im Label anzeigen Allgemeine Java-Themen 7
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
J Gebautes Jar per Maven in einen Docker Container kopieren Allgemeine Java-Themen 0
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
E Einen Bot Programmieren. Allgemeine Java-Themen 6
F Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen Allgemeine Java-Themen 4
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
J Einen Thread in einer Schleife Allgemeine Java-Themen 2
P [Webdriver] einen Datensatz signieren Allgemeine Java-Themen 0
R MAC-Adresse eindeutig für einen PC ? Bezug zu Netzwerk, wieso ? Allgemeine Java-Themen 7
L Variablen Eigenes Objekt wie z.B. einen Integer zuweisen Allgemeine Java-Themen 3
N Wie öffne ich einen runtergeladadenen Code in IntelliJ Allgemeine Java-Themen 3
R Wie einen ClientBuilder / JarBuilder programmieren? Allgemeine Java-Themen 14
S Input/Output Beste Möglichkeit einen String in einen Datei zu Schreiben Allgemeine Java-Themen 2
L Input/Output Wie kann man in der Konsole einen Text farbig ausgeben z.b in grün Allgemeine Java-Themen 6
L Wie programmiert man einen Listener? Allgemeine Java-Themen 1
M Nanosekunden-Pause innerhalb einen Thread-Loops Allgemeine Java-Themen 3
Thallius Wie convertiere ich einen pkcs8 key in einen java lesbaren? Allgemeine Java-Themen 16
M Was braucht man, um einen Java Job zu bekommen? Allgemeine Java-Themen 8
G Substrings in einen String zusammenfassen Allgemeine Java-Themen 5
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
N Compiler-Fehler Warum erhalte ich einen Nullpointer Fehler? Allgemeine Java-Themen 2
P Zum src Ordner einen Projektes navigieren Allgemeine Java-Themen 8
J Abhängigkeit zwischen Rechenzeit und Speicherbedarf in einen Algorithmus Allgemeine Java-Themen 7
MaxG. Swing Wie kann man einen Dateiordner auswählen ? Allgemeine Java-Themen 3
D Kopieren von Dateien aus einem Ordner in einen anderen Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben