{"id":2026,"date":"2014-03-06T12:43:35","date_gmt":"2014-03-06T12:43:35","guid":{"rendered":"http:\/\/blog.bachi.net\/?p=2026"},"modified":"2014-04-24T12:23:34","modified_gmt":"2014-04-24T12:23:34","slug":"byte-reihenfolge-big-oder-little-endian","status":"publish","type":"post","link":"https:\/\/blog.bachi.net\/?p=2026","title":{"rendered":"Byte-Reihenfolge: Big- oder Little-Endian"},"content":{"rendered":"<ul>\n<li>Bei <strong>Big-Endian<\/strong> (w\u00f6rtlich <span style=\"color: #0000ff;\">\u201eGro\u00df-Ender\u201c<\/span>)<br \/>\nwird <span style=\"color: #008000;\">das Byte mit den h\u00f6chstwertigen Bits<\/span> (d. h. die signifikantesten Stellen) <span style=\"color: #008000;\">zuerst gespeichert<\/span>, das hei\u00dft <span style=\"color: #008000;\">an der kleinsten Speicheradresse<\/span>. Allgemein bedeutet der Begriff, dass Daten mit dem gr\u00f6\u00dftwertigen Element zuerst genannt werden, wie etwa bei der deutschen Schreibweise der Uhrzeit: <span style=\"color: #800080;\">Stunde:Minute:Sekunde.<\/span><\/li>\n<li>Bei <strong>Little-Endian<\/strong> (w\u00f6rtlich <span style=\"color: #0000ff;\">\u201eKlein-Ender\u201c<\/span>)<br \/>\nwird dagegen <span style=\"color: #008000;\">das Byte mit den niederstwertigen Bits<\/span> (d. h. die am wenigsten signifikanten Stellen) <span style=\"color: #008000;\">an der kleinsten Speicheradresse<\/span> gespeichert beziehungsweise das kleinstwertige Element zuerst genannt, wie bei der herk\u00f6mmlichen deutschen Datumsschreibweise:<span style=\"color: #800080;\"> Tag.Monat.Jahr.<\/span><\/li>\n<\/ul>\n<table border=\"0\">\n<tr>\n<td>\n<a href=\"http:\/\/blog.bachi.net\/wp-content\/uploads\/2014\/03\/byte_order.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.bachi.net\/wp-content\/uploads\/2014\/03\/byte_order.png\" alt=\"byte_order\" width=\"813\" height=\"308\" class=\"alignleft size-full wp-image-2038\" srcset=\"https:\/\/blog.bachi.net\/wp-content\/uploads\/2014\/03\/byte_order.png 813w, https:\/\/blog.bachi.net\/wp-content\/uploads\/2014\/03\/byte_order-300x113.png 300w\" sizes=\"auto, (max-width: 813px) 100vw, 813px\" \/><\/a>\n<\/td>\n<p><\/\n\n<tr>\n<tr>\n<td>\n<a href=\"http:\/\/blog.bachi.net\/wp-content\/uploads\/2014\/03\/uart_endian.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.bachi.net\/wp-content\/uploads\/2014\/03\/uart_endian.png\" alt=\"uart_endian\" width=\"572\" height=\"348\" class=\"alignleft size-full wp-image-2037\" srcset=\"https:\/\/blog.bachi.net\/wp-content\/uploads\/2014\/03\/uart_endian.png 572w, https:\/\/blog.bachi.net\/wp-content\/uploads\/2014\/03\/uart_endian-300x182.png 300w\" sizes=\"auto, (max-width: 572px) 100vw, 572px\" \/><\/a>\n<\/td>\n<\/tr>\n<\/table>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;stdio.h&gt;\r\n#include &lt;stdint.h&gt;\r\n\r\ntypedef struct {\r\n    union {\r\n        uint16_t    num;\r\n        \r\n        \/* little-endian *\/\r\n        struct {\r\n            uint8_t lo;\r\n            uint8_t hi;\r\n        };\r\n        \r\n        struct {\r\n            uint16_t lsb   : 1;\r\n            uint16_t lsb_1 : 1;\r\n            uint16_t lsb_2 : 1;\r\n            uint16_t lsb_3 : 1;\r\n            uint16_t raw   : 8;\r\n            uint16_t msb_3 : 1;\r\n            uint16_t msb_2 : 1;\r\n            uint16_t msb_1 : 1;\r\n            uint16_t msb   : 1;\r\n        };\r\n    };\r\n} endian_t;\r\n\r\nvoid\r\nprint_endian(endian_t endian)\r\n{\r\n    printf(&quot;---------------------------\\n&quot;);\r\n    printf(&quot;   16: 0x%016lx 0x%04x\\n&quot;, (uint64_t) &amp;endian.num, endian.num);\r\n    printf(&quot;lo  8: 0x%016lx 0x%02x\\n&quot;, (uint64_t) &amp;endian.lo, endian.lo);\r\n    printf(&quot;hi  8: 0x%016lx 0x%02x\\n&quot;, (uint64_t) &amp;endian.hi, endian.hi);\r\n    printf(&quot;MSB: %u\\n&quot;, endian.msb);\r\n    printf(&quot;LSB: %u\\n&quot;, endian.lsb);\r\n    printf(&quot;Bin: %u%u%u%u %u%u%u%u\\n&quot;, endian.msb,   endian.msb_1, endian.msb_2, endian.msb_3,\r\n                                       endian.lsb_3, endian.lsb_2, endian.lsb_1, endian.lsb);\r\n}\r\n\r\nint main(int argc, char *argv&#x5B;]) {\r\n    \r\n    endian_t endian;\r\n    \r\n    endian.num = 0x8000;\r\n    print_endian(endian);\r\n    endian.num = 0x4000;\r\n    print_endian(endian);\r\n    endian.num = 0x2000;\r\n    print_endian(endian);\r\n    endian.num = 0x1000;\r\n    print_endian(endian);\r\n    endian.num = 0x0008;\r\n    print_endian(endian);\r\n    endian.num = 0x0004;\r\n    print_endian(endian);\r\n    endian.num = 0x0002;\r\n    print_endian(endian);\r\n    endian.num = 0x0001;\r\n    print_endian(endian);\r\n    \r\n    return 0;\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n$ .\/endian\r\n---------------------------\r\n   16: 0x00007fffd2223e80 0x8000\r\nlo  8: 0x00007fffd2223e80 0x00\r\nhi  8: 0x00007fffd2223e81 0x80\r\nMSB: 1\r\nLSB: 0\r\nBin: 1000 0000\r\n---------------------------\r\n   16: 0x00007fffd2223e80 0x4000\r\nlo  8: 0x00007fffd2223e80 0x00\r\nhi  8: 0x00007fffd2223e81 0x40\r\nMSB: 0\r\nLSB: 0\r\nBin: 0100 0000\r\n\r\n&#x5B;...]\r\n\r\n<\/pre>\n<p><a href=\"http:\/\/de.wikipedia.org\/wiki\/Byte-Reihenfolge\">Byte-Reihenfolge<\/a><br \/>\n<a href=\"http:\/\/de.wikipedia.org\/wiki\/Bitwertigkeit\">Bitwertigkeit<\/a><br \/>\n<a href=\"http:\/\/www.ctrlinux.com\/blog\/?p=42\">UART Communication from Linux Userspace<\/a><br \/>\n<a href=\"http:\/\/avr.myluna.de\/doku.php?id=de:byteorder\">Byteorder<\/a><\/p>\n<h3>Mit Bit-Feldern<\/h3>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nstruct {\r\n\r\n#ifdef __ONE_ENDIANESS__\r\n    unsigned int    b1:1;\r\n    unsigned int    b2:8;\r\n    unsigned int    b3:7;\r\n    unsigned int    b4:8;\r\n    unsigned int    b5:7;\r\n    unsigned int    b6:1;\r\n#define _STRUCT_FILLED\r\n#endif \/* __ONE_ENDIANESS__ *\/\r\n\r\n#ifdef __OTHER_ENDIANESS__\r\n    unsigned int    b6:1;\r\n    unsigned int    b5:7;\r\n    unsigned int    b4:8;\r\n    unsigned int    b3:7;\r\n    unsigned int    b2:8;\r\n    unsigned int    b1:1;\r\n#define _STRUCT_FILLED\r\n#endif \/* __OTHER_ENDIANESS__ *\/\r\n\r\n};\r\n\r\n#ifndef _STRUCT_FILLED\r\n#  error Endianess uncertain for struct\r\n#else\r\n#  undef _STRUCT_FILLED\r\n<\/pre>\n<p><a href=\"http:\/\/stackoverflow.com\/questions\/724404\/converting-endianess-on-a-bit-field-structure\">Converting Endianess on a bit field structure<\/a><br \/>\n<a href=\"http:\/\/stackoverflow.com\/questions\/2635484\/bit-ordering-and-endianess\">bit ordering and endianess<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bei Big-Endian (w\u00f6rtlich \u201eGro\u00df-Ender\u201c) wird das Byte mit den h\u00f6chstwertigen Bits (d. h. die signifikantesten Stellen) zuerst gespeichert, das hei\u00dft an der kleinsten Speicheradresse. Allgemein bedeutet der Begriff, dass Daten mit dem gr\u00f6\u00dftwertigen Element zuerst genannt werden, wie etwa bei der deutschen Schreibweise der Uhrzeit: Stunde:Minute:Sekunde. Bei Little-Endian (w\u00f6rtlich \u201eKlein-Ender\u201c) wird dagegen das Byte mit [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2026","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/2026","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2026"}],"version-history":[{"count":15,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/2026\/revisions"}],"predecessor-version":[{"id":2242,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/2026\/revisions\/2242"}],"wp:attachment":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2026"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2026"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2026"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}