hi ich hab ein paar int werte und will diese um übertragen in einen byte arr speichen steh grade ein bissen aufm schlauch. bin für jede hilfe dankbar. thx clos
wennduunsnochverrätstinwelcherprogrammierspracheduarbeitestwäredassehrne tt.
Ja und weiter? Der Informationsgehalt deiner Frage geht trotzdem gegen Null...
ich hab 3 temp.werte (int) , 2 mal druckwerte (int) die 5 werte müssen zum übertragen mit der rs232 in ein 10ner array.
Und? Wo ist das Problem? Alle Daten liegen in Form von Bytes im Speicher, und können als solche natürlich auch über 'ne serielle Schnittstelle übertragen werden. Ratsam ist das nicht unbedingt, da unterschiedliche Systeme die Daten unterschiedlich interpretieren können; verschiedene Wortbreiten und unterschiedliche "endianness" können zu interessanten Effekten führen. Portierbarer ist die Übertragung in einer Textrepräsentation.
>Portierbarer ist die Übertragung in einer Textrepräsentation.
z.B. als ASCII-HEX oder base64...
Vorsicht, dieser Code geht davon aus, dass ein int 4 Byte hat!
1 | int i = 1234; |
2 | char bytes[4]; |
3 | memcpy(bytes,&i,4); |
4 | printf("%i\n",bytes[0]); |
5 | printf("%i\n",bytes[1]); |
6 | printf("%i\n",bytes[2]); |
7 | printf("%i\n",bytes[3]); |
@ Christoph: Das ist irgendwie sinnfrei, da haste genau das erwähnte Problem. Wenn er seinen Code nun woanders hin portiert, läuft er genau ins Messer. Da macht man doch besser auf der einen Seite
1 | int i; |
2 | printf("%i", i); |
Und auf der Gegenstelle arbeitet man dann mit
1 | scanf
|
@Sven: Natürlich weiß ich das dieser Code nicht unbedingt Sinn macht. Die printfs dienen hier ohnehin nur zum Testen. ich wollte nur zeigen wie man die Bytes eines Integers bekommt.
Christof meinte mit 'ins Messer laufen' das leidige Problem der Endianness. Neue CPU, neuer Compiler -> neues Glück. Wenn schon, dann sollte man sich an einen Standard halten und zb. Network Byte Order benutzen. Dafür gibt es auch Funktionen die die Umsetzung erledigen. http://de.wikipedia.org/wiki/Byte-Reihenfolge Wenn es nicht auf das letzte bischen Speed ankommt, dann ist man aber mit einer rein textuellen Übertragung, wie bereits vorgeschlagen, meist besser beraten. Und sei es nur, weil man dann zu Debug-Zwecken mit einem Terminal einfach mitlesen kann bzw. eine Endstelle 'per Hand' simulieren kann.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.