mikrocontroller.net

Forum: Projekte & Code ByteAccess made easy


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Wilhelm M. (wimalopaan)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Auch schon oft diskutiert wurde der Zugriff auf die einzelnen Bytes 
eines integralen Typs.

Dazu gibt es ja viele (richtige und falsche) Lösungen. Die 
shift-Variante ist in jedem Fall korrekt und constexpr (solange 
std::bit_cast noch nicht verfügbar ist, wohl die einzige als constexpr).

Die Variante mit structured-bindings finde ich ganz nett:
volatile const auto r = 0x04030201;

int main() {
    using etl::bytesOf;
    const auto [b1] = bytesOf(uint8_t{0x01});
    const auto [lsb2, msb2] = bytesOf(uint16_t{0x0201});
    const auto [lsb3, b31, b32, msb3] = bytesOf(r);
    const auto [lsb4, b41, b42, msb4] = bytesOf(0x04030201);
    const auto [lsb5, b51, b52, b53, b54, b55, b56, msb5] = bytesOf(0x0403020104030201UL);
        
//    const auto x1 = bytesOf(r).get<4>(); // compiletime-error

    const auto x1 = bytesOf(r).get<3>();
    const auto x2 = get<1>(bytesOf(r));
            
    constexpr auto x3 = get<1>(bytesOf(0x04030201));

    return (int)msb3;
}

Der komplette Code ist in der angehängten Datei.

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.

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