Binärdarstellung in string umwandeln
vonHandCoder
- programmiertechnik
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 ?
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
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
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
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