-         

Ergebnis 1 bis 7 von 7

Thema: 26 stelligen string aus 0 und 1 verkleinern, wie?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    360

    Frage 26 stelligen string aus 0 und 1 verkleinern, wie?

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    ich sende einen funkcode aus um mit einem intertechnofunkempfänger zu kommunizieren (> 64 millionen möglichkeiten).
    die ersten 26 stellen des strings bilden die id und bestehen aus 0 und 1.

    beispiel: 01011101010010101011101010

    da das schwerer zu handeln ist weil ich so nicht einfach und übersichtlich erkenne welche funkcodes ich bereits vergeben habe, würde ich da gerne eine nummerierung einbauen.

    ein teil des strings kann fix immer den selben wert haben (ich werde ja nie 64 millionen funksteckdosen anlernen wollen ) , der restliche teil soll nummeriert sein. 256 verschiedene möglichkeiten reichen für mein vorhaben mit ausreichender reserve aus. somit kann ich dann leichter erkennen, welche funkcodes ich anderen empfängern schon angelernt habe.

    wie bekomme ich das mit Bascom hin?
    ----------------------------------------------------------------------------------------
    Je tiefer die Sonne der Kunst sinkt, umso grössere Schatten werfen Zwerge!!

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Hallo!

    Binärzahlen lassen sich am kürzesten und einfach mit Hexadezimalen darstellen (vier Bits binär = 1 Zeichen Hex). Über Bascom habe ich k.A.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  3. #3
    RN-Premium User Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    47
    Beiträge
    456
    Blog-Einträge
    16
    Ich würde auch Hex Darstellung empfehlen. Und wenn du mehr Stellen zur Verfügung hast als benötigt, kannst du sie benutzen um Ordnung und System in die Nummerierung einzuführen. Also z.B. erste Hex-Ziffer = Etage, zweite = Stromkreisnummer, oder Raumnummer, dritte bis letzte = laufende Nummerierung. Oder so ähnlich.

    - - - Nachtrag 13:45 - - -
    Der Vorteil von Hex ist, dass man die Zahl mit etwas Übung schnell hex<->bin im Kopf wandeln kann
    Geändert von witkatz (25.02.2014 um 13:49 Uhr)

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.06.2011
    Ort
    Dresden
    Beiträge
    170
    hallo,
    noch kleiner: eigenes Zahlensystem auf Basis aller verfügbaren Zeichen a..z,A..Z,0..9,#..?
    mfg
    Achim

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    ... funkcode ... > 64 millionen möglichkeiten ... 256 verschiedene möglichkeiten reichen ...
    Vorschlag:

    i) Vorne 6 Bits dazu
    ii) Diese nun 32 Bits (= long integer) aufsplitten in zwei Words
    iii) Das "vordere" Word aufsplitten in zwei Bytes
    iv) Das zweite Byte des vorderen Words ist der eigentliche Schlüssel mit 255 Varianzen, der Rest vom Schlüssel bleibt konstant.
    v) Fazit: die 256 Möglichkeiten sind eindeutig erkennbar und handhabbar.

    Anmerkung: natürlich muss man den Schlüssel nicht da vorne nehmen, man kann die Aufsplitterei (und das Zusammenfügen) auch mit den letzten acht Bits machen. Ich würde aus Gründen des "Hackens von Aussen" aber das Byte mittendrin nehmen, Arbeit bzw. Aufwand bleiben im Prinzip gleich.

    Durchführung etwa so mit Deinem
    beispiel: 01011101010010101011101010
    Die Punkte sind hier nur Platzhalter um das automatische Beschneiden von Leerstellen zu verhindern

    Code:
    Jetzt Auffüllen mit Nullen am MSB-Ende (ganz vorn):
    beispiel: ..------0101110101 0010101011101010
    Neuer Wert: 0000000101110101 0010101011101010
    In 2 Word
    Zerlegen: ..0000000101110101 0010101011101010
    höherwertiges Word in 2 Bytes zerlegen
    Ursprung: ..00000001 01110101 0010101011101010
    Zerlegt: ...xxxxxxxx 01110101 xxxxxxxxxxxxxxxx
    Dieses Byte ist Dein Schlüssel, die hier durch x repräsentierten Ziffern bleiben für alle Deine Schlüssel gleich. Bei Verwendung als Schlüssel werden nur die benötigten "unteren" 26 Bits genommen. UND für eine gute Übersicht ist das hier variante Byte als Dezimalziffer einfach darstellbar.

    Warum das Ganze? Weil das Zerlegen und Zusammenfügen von Bytes (also 8 Bit in EINER Gruppe) zum Standard von Programmiersprachen gehört - - sagt einer, der keine Ahnung von Bascom hat *ggg*.

    http://www.roboternetz.de/community/...zusammenfassen
    http://www.mikrocontroller.net/topic/83140
    http://www.rn-wissen.de/index.php/Ba...Long-Variablen
    Ciao sagt der JoeamBerg

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    360
    ich hab jetzt einfach den string zerlegt und die ersten 8 stellen jeweils in 2 gruppen zu je 4 als bcd wert angegeben. danach steht eine 1 für "ein" oder eine 0 für "aus" senden. der restliche string ist immer der selbe. ich sende nun also nur noch z.b. " 01 16 1" so habe ich 16 x 16 möglichkeiten = 256.

    kann nun mit meiner hausautomation also auch die günstigen intertechno empfänger bedienen nachdem die fs20 komponenten leider immer teurer werden.
    ----------------------------------------------------------------------------------------
    Je tiefer die Sonne der Kunst sinkt, umso grössere Schatten werfen Zwerge!!

  7. #7
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Gratulation !

    Du hast die einfachste für dich Kombination gewählt. Übrigens die 4-bittige Dezimalzahl kann sich "normaler" Mensch (also kein ASMan) besser als Hexzahl merken.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

Ähnliche Themen

  1. String in array aus FIFO speichern
    Von kein_plan im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 01.11.2013, 13:54
  2. mehrere bestimmte Zeichen aus einem String auslesen
    Von mat-sche im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 19.03.2011, 19:25
  3. C: Zeichen aus String entfernen (Keil, XE164)
    Von Jaecko im Forum Software, Algorithmen und KI
    Antworten: 3
    Letzter Beitrag: 12.03.2008, 13:07
  4. Antworten: 9
    Letzter Beitrag: 27.09.2007, 16:58
  5. Aus einem String Daten ausmaskieren
    Von Olli2301 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 13.12.2006, 23:53

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •