Forum: Mikrocontroller und Digitale Elektronik Kopieren eines langen Hexwertes auf Speicherbereich


von Josef K. (zumlin)


Lesenswert?

Hallo

hab ein kleines Problem und komm einfach auf keine gute Lösung.
Ich alloziere Speicher und will dort dann einen Block an Hexwerten 
hineinkopieren. Nur wie?
Meine erster Versuch sah so aus:
1
uint8_t  *data;
2
data = malloc(sizeof(uint8_t) * 8);
3
memcpy(data, (char*)0x00FFAABB, 8);
Wie schon fast erwartet kam dabei nichts gutes raus. Wie macht man das 
richtig und mit möglichst wenig Befehlszeilen? :)

von gast (Gast)


Lesenswert?

long  *data;
data = (long*)malloc(sizeof(uint8_t) * 8);
data[0] = 0x00FFAABB;

das sollte helfen...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> memcpy(data, (char*)0x00FFAABB, 8);

Und was steht an der Adresse 0xFFAABB?

memcpy erwartet als zweites Argument einen Pointer auf die zu 
kopierenden Daten, nicht die Daten selber.

von Josef K. (zumlin)


Lesenswert?

Hmm. Ich bräuchte aber einen uint8_t Pointer bzw. ein Speicherfeld mit 
lauter chars.

@Rufus
Mit welchem Befehl kann man dann direkt Daten kopieren ohne vorher für 
die Daten eine Variable angelegt zu haben? Das geht doch sicher mit 
memcpy irgendwie, oder?

von Phantomix X. (phantomix)


Lesenswert?

>Daten kopieren ohne vorher für die Daten eine Variable angelegt zu haben

Wenn du sie nicht vorher im Speicher abgelegt hast, kann man sie auch 
nicht kopieren. Entweder per Variable oder per Konstante auf die 
zugegriffen wird. Die Lösung des Problems kann sogar dank 
Havard-Architektur beliebig komplex werden (je nachdem, wo du deine 
Quelle gern stehen hättest)
Edit: Sofern du natürlich eine CPU mit Havard hast. bei Von-Neumann ist 
zumindest das einfacher...

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.