vonHandCoder: Binärdarstellung in string umwandeln

wie kann ich aus einer Reihe Einsen und Nullen einen String machen?
Ich will es in einer MySQL Tabelle als varchar (oder varbinary) speichern.
Also nicht 100001 in "100001", sondern 100001 in (dezimal)65 in (Ascii) A.
Ich wollte das in Java versuchen, aber mittlerweile ist mir auch perl php oder javascript recht..

Welche Zeichenkodierung ist empfehlenswert?
Gibt es eine, die keine Bits verschwendet(wie base64), von MySQL akzeptiert wird und ab null aus druckbaren Zeichen besteht?

Ich such schon seit Tagen nach einer Lösung für dieses Problem...

Hat jemand einen Tipp ?

  1. Hallo erstmal!

    wie kann ich aus einer Reihe Einsen und Nullen einen String machen?

    zerlege den 0-1-String alle acht Zeichen str_split() (Version >= 5),
    wandle ihn in Zeichen um bindec() und chr()

    Gruß aus Berlin!
    eddi

    --
    Wer Rechtschreibfehler findet, darf sie behalten.
    1. Hallo erstmal!

      Ja, Hallo

      Vielen Dank, das ist wieder mal ein Paradebeispiel einer simplen Lösung in Php. Ich mach jetzt das was ich wollte in Html+Php, und wenn mal Zeit ist, lern ich gleich C++. Java ist sowas von nicht zu gebrauchen...

      tschüs

      --
      cogito ergo akro
      1. Hallo vonHandCoder,

        String s; // dein 10-String
        int l = s.length() / 16;
        char[] c = new char[l + 1]; //Die Zeichen, die Du willst.
        for(int i = 0; i < l; i++) {
          c[i] = (char) Integer.parseInt(s.substring(i * 16, (i + 1) * 16), 2);
        }
        c[l] = (char) Integer.parseInt(s.substring(l * 16), 2);

        Das ist auch nicht so wahnsinnig kompliziert.
        Ok, Java bietet keine Funktion um einen String direkt in gleich lange Teile zu zerlegen.
        Außerdem musst Du noch etwas über Zeichensätze nachdenken (das solltest Du aber sowieso tun).
        Kannst Du Deinem DBMS einfach irgend welche bytes füttern, oder soll das ein bestimmter Zeichensatz sein, der evtl nicht alle Byte-Kombinationen erlaubt?

        Grüße

        Daniel

        1. public class BitToString {  
           public static void main(String[] args) {  
            String s = "00000000010010000000000001000001000000000100110000000000010011000000000001001111";  
            //Das ist Unicode-ganz schön verschwenderisch..  
            
            int i = s.length() / 16;  
            // = 5 in diesem Fall  
            
            char[] c = new char[i];  
            
            for (int u = 0; u < i; u++) {  
             c[u] = (char) Integer  
               .parseInt(s.substring(u * 16, (u + 1) * 16), 2);  
            }  
            
            for (int a = 0; a < c.length; a++) {  
             System.out.print(c[a]);  
            }  
           }  
          }
          

          Vielen Dank, Daniel

          Ja, sowas wie die parseInt()-Methode hab ich gesucht.
          Mir war auch nicht bewusst, das Ich eine Integer-Klasse in ein Char umwandeln kann und dann kommt ein unicode-Zeichen heraus. Das funktioniert aber so einfach nicht bei anderen Zeichensätzen (z.B. ascii oder base64), oder?

          Außerdem musst Du noch etwas über Zeichensätze nachdenken (das solltest Du aber sowieso tun).
          Kannst Du Deinem DBMS einfach irgend welche bytes füttern, oder soll das ein bestimmter Zeichensatz sein, der evtl nicht alle Byte-Kombinationen erlaubt?

          Nein auf keinen Fall, ich brauche einen vollbelegten, möglichst kurzen, und aus simplen Zeichen bestehenden Zeichensatz, den MySQL akzeptiert, also idealerweise einen ein Bit grossen, der x und y darstellen kann.

          Ist es denn nicht möglich einzelne Bitfolgen einer variablen Länge irgendwie in eine MySQL Tabelle zu pressen ??

          tschüs und bis morgen, ich krieg jetzt ne ZahnOP verpasst

          --
          cogito ergo akro