Bit Werte in ASCII umwandeln
-
Hallo ich habe in C ein Programm geschrieben das mit verschiedene 16 bit Messwerte aufnimmt.Nun soll ich diese Werte übertragen.Mein Problem ist ich soll die Werte in ASCII übertragen.Kann mir jemand sagen wie ich meinen 16 bit Wert in ASCII umwandeln kann?
Besten Dank schon mal.
-
mit 'sprintf' z.b. könnteste ascii daraus machen. http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/
du könntest die werte auch als rohdaten übertragen, wären dann immer 2 bytes pro wert. oder soll das nicht sein?
-
Doch so soll ich es machen.Den Wert umwandeln und die einzelnen Byts übetragen.
-
;fricky schrieb:
mit 'sprintf' z.b. könnteste ascii daraus machen. http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/
du könntest die werte auch als rohdaten übertragen, wären dann immer 2 bytes pro wert. oder soll das nicht sein?
Wenn ich das richtig verstanden habe, dann eher 4 Bytes.
Du kannst je 4 Bits mit einem ASCII-Zeichen kodieren.
-
Da geht es ans eingemachte der Programmierung. Was kriegst du als 16-bit-Messwert geliefert - eine binäre Folge von 16 bits oder schon etwas aufbereitetes?
-
DarthZiu schrieb:
Du kannst je 4 Bits mit einem ASCII-Zeichen kodieren.
7 bits sogar. wenn du die nicht druckbaren zeichen weglässt bestimmt 6.
-
was hältst du von
base64http://de.wikipedia.org/wiki/Base64
base85http://de.wikipedia.org/wiki/Base85
oder
y-encodewww.yenc.org?lg lolo
-
-
berniebutt schrieb:
Da geht es ans eingemachte der Programmierung. Was kriegst du als 16-bit-Messwert geliefert - eine binäre Folge von 16 bits oder schon etwas aufbereitetes?
die frage ist doch eher die sample-rate...
ein 16-bit messwert hat doch 16-bit oder? was willst da noch aufbereiten? es verlustlos packen?lg lolo
-
noobLolo schrieb:
berniebutt schrieb:
Da geht es ans eingemachte der Programmierung. Was kriegst du als 16-bit-Messwert geliefert - eine binäre Folge von 16 bits oder schon etwas aufbereitetes?
die frage ist doch eher die sample-rate...
ein 16-bit messwert hat doch 16-bit oder? was willst da noch aufbereiten? es verlustlos packen?lg lolo
Nene, es geht darum, 7- Bit- Strecken besser zu nutzen, ohne sich beim Packen den Wolf zu rechnen. Kann man extrem doof machen, wie bei RTF oder IntelHex, dann wird aus einem Byte mindestens zwei, XML ist glaube ich momentan der Spitzenreiter beim Overheading.
Wenn aus bestimmten Gründen der Kanal nicht wenigstens 8 Bit hergibt, haben diese Lösungen alle ihren Charme.
-
;fricky schrieb:
DarthZiu schrieb:
Du kannst je 4 Bits mit einem ASCII-Zeichen kodieren.
7 bits sogar. wenn du die nicht druckbaren zeichen weglässt bestimmt 6.
Als "als ASCII übertragen" verstehe ich so:
16bit-Wert: 0101 1111 0111 1101
Übetragung: 5 F 7 B
4 Bit pro ASCII-Zeichen.
-
DarthZiu schrieb:
Als "als ASCII übertragen" verstehe ich so:
16bit-Wert: 0101 1111 0111 1101
Übetragung: 5 F 7 B
4 Bit pro ASCII-Zeichen.aber so ginge z.b. auch: 0101111 1011111 01xxxxx, entspricht erstmal: /_
also schon mal gegenüber deinem vorschlag ein byte gespart und für's nächste zeichen 5 bits gewonnen. aber ok, deine methode ist natürlich programmierer-freundlicher.
-
??? Schonmal den ersten Beitrag dieses Threads gelesen?
Es geht doch hier nicht darum, was effektiv ist. Sondern was in der Aufgabe gefordert war...
Ich persönlich finde diesen Ansatz auch Quark, weil man die Übertragungsmenge einfach verdoppelt. Aber in der Industrie findet man solche Protokolle häufiger. Warum auch immer.
-
DarthZiu schrieb:
??? Schonmal den ersten Beitrag dieses Threads gelesen?
Es geht doch hier nicht darum, was effektiv ist. Sondern was in der Aufgabe gefordert war...deswegen war mein erster vorschlag ja auch, einfach 'sprintf' zu nehmen. damit kann er sich auch 4-stellige hexzahlen (%04x-formatierung) machen, wenn er will.
-
DarthZiu schrieb:
;fricky schrieb:
DarthZiu schrieb:
Du kannst je 4 Bits mit einem ASCII-Zeichen kodieren.
7 bits sogar. wenn du die nicht druckbaren zeichen weglässt bestimmt 6.
Als "als ASCII übertragen" verstehe ich so:
16bit-Wert: 0101 1111 0111 1101
Übetragung: 5 F 7 B
4 Bit pro ASCII-Zeichen.
du überträgst das doch als hex und nicht als ascii
-
DarthZiu schrieb:
??? Schonmal den ersten Beitrag dieses Threads gelesen?
Es geht doch hier nicht darum, was effektiv ist. Sondern was in der Aufgabe gefordert war...
Die Aufgabenstellung ist dahingehend recht offen. Ich persönlich würde auch Base64 verwenden. Auf die Idee, das ganze in hex umzuwandeln, würde ich erstmal nicht kommen.
Aber da deine Meinung offensichtlich schon feststeht, mach es doch einfach so, wie du willst
-
zwutz schrieb:
Ich persönlich würde auch Base64 verwenden. Auf die Idee, das ganze in hex umzuwandeln, würde ich erstmal nicht kommen.
damit outest du dich aber als webprogrammierer *fg*, na ok, die ganz harten würden XML nehmen.