fork download
  1. #include <stdio.h>
  2. #include <stdint.h>
  3.  
  4. int main() {
  5. uint32_t prio = 0x81818080;
  6.  
  7. // Битовые сдвиги — НЕ зависят от эндийности
  8. uint8_t prio0 = (prio >> 0) & 0xFF;
  9. uint8_t prio1 = (prio >> 8) & 0xFF;
  10. uint8_t prio2 = (prio >> 16) & 0xFF;
  11. uint8_t prio3 = (prio >> 24) & 0xFF;
  12.  
  13. printf("== Bit shift version ==\n");
  14. printf("prio0 = 0x%02x\n", prio0);
  15. printf("prio1 = 0x%02x\n", prio1);
  16. printf("prio2 = 0x%02x\n", prio2);
  17. printf("prio3 = 0x%02x\n", prio3);
  18.  
  19. // Доступ по указателю — ЗАВИСИТ от эндийности
  20. uint8_t *p = (uint8_t*)&prio;
  21.  
  22. printf("== Memory version (pointer access) ==\n");
  23. for (int i = 0; i < 4; i++) {
  24. printf("byte[%d] = 0x%02x\n", i, p[i]);
  25. }
  26.  
  27. return 0;
  28. }
  29.  
Success #stdin #stdout 0.01s 5280KB
stdin
add $s0, $t2, $s0
stdout
== Bit shift version ==
prio0 = 0x80
prio1 = 0x80
prio2 = 0x81
prio3 = 0x81
== Memory version (pointer access) ==
byte[0] = 0x80
byte[1] = 0x80
byte[2] = 0x81
byte[3] = 0x81