#include <stdio.h>
#include <stdint.h>
int main() {
uint32_t prio = 0x81818080;
// Битовые сдвиги — НЕ зависят от эндийности
uint8_t prio0 = (prio >> 0) & 0xFF;
uint8_t prio1 = (prio >> 8) & 0xFF;
uint8_t prio2 = (prio >> 16) & 0xFF;
uint8_t prio3 = (prio >> 24) & 0xFF;
printf("== Bit shift version ==\n");
printf("prio0 = 0x%02x\n", prio0);
printf("prio1 = 0x%02x\n", prio1);
printf("prio2 = 0x%02x\n", prio2);
printf("prio3 = 0x%02x\n", prio3);
// Доступ по указателю — ЗАВИСИТ от эндийности
uint8_t *p = (uint8_t*)&prio;
printf("== Memory version (pointer access) ==\n");
for (int i = 0; i < 4; i++) {
printf("byte[%d] = 0x%02x\n", i, p[i]);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KCmludCBtYWluKCkgewogICAgdWludDMyX3QgcHJpbyA9IDB4ODE4MTgwODA7CgogICAgLy8g0JHQuNGC0L7QstGL0LUg0YHQtNCy0LjQs9C4IOKAlCDQndCVINC30LDQstC40YHRj9GCINC+0YIg0Y3QvdC00LjQudC90L7RgdGC0LgKICAgIHVpbnQ4X3QgcHJpbzAgPSAocHJpbyA+PiAwKSAgJiAweEZGOwogICAgdWludDhfdCBwcmlvMSA9IChwcmlvID4+IDgpICAmIDB4RkY7CiAgICB1aW50OF90IHByaW8yID0gKHByaW8gPj4gMTYpICYgMHhGRjsKICAgIHVpbnQ4X3QgcHJpbzMgPSAocHJpbyA+PiAyNCkgJiAweEZGOwoKICAgIHByaW50ZigiPT0gQml0IHNoaWZ0IHZlcnNpb24gPT1cbiIpOwogICAgcHJpbnRmKCJwcmlvMCA9IDB4JTAyeFxuIiwgcHJpbzApOwogICAgcHJpbnRmKCJwcmlvMSA9IDB4JTAyeFxuIiwgcHJpbzEpOwogICAgcHJpbnRmKCJwcmlvMiA9IDB4JTAyeFxuIiwgcHJpbzIpOwogICAgcHJpbnRmKCJwcmlvMyA9IDB4JTAyeFxuIiwgcHJpbzMpOwoKICAgIC8vINCU0L7RgdGC0YPQvyDQv9C+INGD0LrQsNC30LDRgtC10LvRjiDigJQg0JfQkNCS0JjQodCY0KIg0L7RgiDRjdC90LTQuNC50L3QvtGB0YLQuAogICAgdWludDhfdCAqcCA9ICh1aW50OF90KikmcHJpbzsKCiAgICBwcmludGYoIj09IE1lbW9yeSB2ZXJzaW9uIChwb2ludGVyIGFjY2VzcykgPT1cbiIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICBwcmludGYoImJ5dGVbJWRdID0gMHglMDJ4XG4iLCBpLCBwW2ldKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=