www.mikrocontroller.net

Forum: PC-Programmierung integer in byte array


Autor: clos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wennduunsnochverrätstinwelcherprogrammierspracheduarbeitestwäredassehrne 
tt.

Autor: clos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
;-) sry

c ohne ++

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja und weiter? Der Informationsgehalt deiner Frage geht trotzdem gegen 
Null...

Autor: clos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab 3 temp.werte (int) , 2 mal druckwerte (int)
die 5 werte müssen zum übertragen mit der rs232 in ein 10ner array.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Portierbarer ist die Übertragung in einer Textrepräsentation.
z.B. als ASCII-HEX oder base64...

Autor: Christoph Mmmmmmm (Firma: privat) (mauralix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorsicht, dieser Code geht davon aus, dass ein int 4 Byte hat!
int i = 1234;
char bytes[4];
memcpy(bytes,&i,4);
printf("%i\n",bytes[0]);
printf("%i\n",bytes[1]);
printf("%i\n",bytes[2]);
printf("%i\n",bytes[3]);

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ 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
int i;
printf("%i", i);

Und auf der Gegenstelle arbeitet man dann mit
scanf

Autor: Christoph Mmmmmmm (Firma: privat) (mauralix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.