*(uint16_t *)&test[0] = ady; ???

Moderator Persönliche Seite #411394
Lesenswert?
• ▲
▼
&test[0] ist identisch zu test selbst: es ergibt die (Anfangs-)
Adresse des Arrays test.

Diese wird als Zeiger auf einen vorzeichenlosen 16-bit-Integer
interpretiert, und auf die Adresse, auf die er zeigt, wird der
Wert ady geschrieben.

Warum jemand ein Array namens test aus vorzeichenlosen 8-bit-
Integers (uint8_t) zusammensetzt, um es dann aber mit 16-bit-
Integerwerten zu füllen, musst du den werten Autor fragen.
Gast #411395
Lesenswert?
• ▲
▼
Naja. Man kann so z.B bequem auf die Bytes der Zahl zugreifen.
Also falls das obere UND das untere Byte für
Weiterverarbeitungsschritte benötigt wird ist die Methode
wahrscheinlich schneller als

char low = (char)INT16;
char hi  = (char)(INT16>>8);

Wobei: wenn INT16 bei mir eine Registervariable wäre (low und hi auch)
und der Compiler geschickt optimieren würde, dann wären das nur 2
mov's.
Also ist das bei kleinen Datenmengen relativ sinnlos.
Ich habe diese "Tricks" mal verwendet, als es draum ging aus einem
Speicherblock eine Struktur zu kopierten, die an beliebiger Stelle im
Block stehen konnte.. erleichtert ne Menge Schreibarbeit.


MFG

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.