Konvertierung von C-string Binär Darstellung
In ANSI-C, wie wir konvertieren einen string in ein array von binären bytes?
Alle die googeln und die Suche gibt mir Antworten für C++ und andere und nicht C.
Eine Idee, die ich hatte, war zu konvertieren den string in ASCII umwandeln und dann jeden ASCII-Wert in seine binäre. (Duh!) Ich weiß es ist die dümmste Ideen, aber ich bin nicht sicher, ob eine andere option.
Ich habe gehört, abt der encoding-Funktion in Java. Ich bin nicht sicher, ob das passt zu dem gleichen Zweck und angenommen werden kann, C.
string = "Hello"
bytearr[] = 10100101... some byte array..
Es wäre toll, wenn jemand kann werfen etwas Licht auf diese.
Dank!
Was meinst du mit "array von Binär-Byte" ? Ein "String" in C ist einfach ein Stück Speicher (array) mit Werten (bytes), dass man zugeordnet ASCII-Zeichen.
Einige Sache ähnlich wie der byte-array in Java. Wo u-Verarbeitung kann der string auch in form eines byte-array.
Sie scheinen sehr verwirrt über die Terminologie. Ein string in C ist ein array von binären bytes, mehr oder weniger per definition. Und es ist wohl auch schon ASCII (es sei denn, es eine andere Codierung von Unicode unterstützt, dass Zeichen außerhalb von U+0000 bis U+007F). Also bitte nochmal versuchen zu erklären, was Sie wollen, die Inhalte dieser "bytearr" zu werden.
Einige Sache ähnlich wie der byte-array in Java. Wo u-Verarbeitung kann der string auch in form eines byte-array.
Sie scheinen sehr verwirrt über die Terminologie. Ein string in C ist ein array von binären bytes, mehr oder weniger per definition. Und es ist wohl auch schon ASCII (es sei denn, es eine andere Codierung von Unicode unterstützt, dass Zeichen außerhalb von U+0000 bis U+007F). Also bitte nochmal versuchen zu erklären, was Sie wollen, die Inhalte dieser "bytearr" zu werden.
InformationsquelleAutor Maverickgugu | 2011-04-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Oder meinst du, wie das konvertieren von C-string-binary-Darstellung?
Hier ist eine Lösung, die Konvertierung von Zeichenfolgen auf binärer Darstellung. Es kann leicht geändert werden, um speichern Sie die Binär-strings in ein array von strings.
Beispiel input & output:
./ascii2bin hello
InformationsquelleAutor Athabaska Dick
Es gibt keine strings in C. Jeder string IST ein array von bytes.
Fixiert es für Sie
InformationsquelleAutor Jurlie
Einen string ist ein array von bytes.
Wenn Sie wollen display der ASCII-Wert der jedes Zeichen in hex-form, Sie würde einfach etwas wie:
InformationsquelleAutor John Bode
Auf die meisten Systeme, die ich gearbeitet habe, die Breite der
char
1-byte-und so einchar[]
oderchar*
ist ein byte-array.In den meisten anderen Sprachen wie Java, die string-Datentyp übernimmt die Suche nach dem, bis zu einem gewissen Grad, Begriffe wie Codierung, durch eine Codierung zu verwenden, wie zum Beispiel UTF-8. In C ist dies nicht der Fall. Wenn ich lese einen UTF-8 string, dessen Inhalt inklusive multi-byte-Werte, meine Charaktere vertreten sein werden, die von zwei buckets im array (oder möglicherweise mehr).
Betrachten es aus einer anderen Sicht zu betrachten, dass alle Typen in C eine Feste Breite für Ihr system (obwohl Sie variieren zwischen Implementierungen).
So, dass der string, den Sie gerade operiert ist ein byte-array.
Nächste Frage, die ich denke, dann ist, wie kann man diese anzeigen bytes? Das ist ziemlich einfach:
Ich kann nicht einen Grund denken, warum Sie wollen, zu konvertieren, Ausgabe in binärer, aber es könnte getan werden, wenn Sie so gesinnten sind.
char
1 byte", aber es wahrscheinlich verdient als sagte weiter in diesem Zusammenhang:sizeof(char)==1
PER DEFINITION. Es wird nie etwas anderes sein. (Allerdings ist der Wert derCHAR_BIT
ist nicht unbedingt 8.)InformationsquelleAutor
Wenn Sie wollen einfach nur Durchlaufen (oder zufällig Zugriff) der einzelnen bytes' numerische Werte, die Sie nicht zu tun haben, und keine Konvertierung, da C-strings sind arrays schon:
Wenn Sie nicht vorsichtig mit dieser Art von code, wenn Sie Gefahr laufen, in eine Welt von weh, wenn Sie brauchen, um Unterstützung für nicht-ASCII-Zeichen.
InformationsquelleAutor zwol
Seit printf ist langsam beim konvertieren einer riesigen binäres array. Hier ist ein weiterer Ansatz, der nicht die Verwendung von printf ():
Konvertieren hex-string in ein byte-array würden Sie Folgendes tun:
Quelle ist ein Zeiger auf ein char-array, enthält einen hex-string.
Ziel ist ein Zeiger auf ein char-array, byte-array.
Konvertieren eines byte-array in einen hex-string, die Sie auch zum folgenden:
Ziel ist ein Zeiger auf ein char-array, enthält einen hex-string.
Quelle ist ein Zeiger auf ein char-array, byte-array.
Hier sind ein paar fehlenden Makros:
InformationsquelleAutor Nathan Moinvaziri