Forum: PC-Programmierung integer in byte array


von clos (Gast)


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

von Sven P. (Gast)


Lesenswert?

wennduunsnochverrätstinwelcherprogrammierspracheduarbeitestwäredassehrne 
tt.

von clos (Gast)


Lesenswert?

;-) sry

c ohne ++

von Sven P. (Gast)


Lesenswert?

Ja und weiter? Der Informationsgehalt deiner Frage geht trotzdem gegen 
Null...

von clos (Gast)


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.

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Kai G. (runtimeterror)


Lesenswert?

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

von Christoph M. (Firma: privat) (mauralix)


Lesenswert?

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]);

von Sven P. (Gast)


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
1
int i;
2
printf("%i", i);

Und auf der Gegenstelle arbeitet man dann mit
1
scanf

von Christoph M. (Firma: privat) (mauralix)


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.

von Karl H. (kbuchegg)


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.

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
Noch kein Account? Hier anmelden.