Я борюсь с проблемой порядка байтов в следующем примере.
В этом случае main () передает адрес 32-битного целого числа, а myfunc () получает его в 64-битном формате.
#include <stdint.h>
#include <stdio.h>
void myfunc(uint64_t *b)
{
printf("%llx\n", *b);
if ((*b & 255) == 127)
printf("\n It works\n");
else
printf("\n Not working\n");
}
main()
{
uint32_t a = 127;
printf("\n%lx\n", a);
myfunc(&a);
}
Работает корректно на платформе с прямым порядком байтов (Windows).
7f
28ff780000007f
Работает
Но он не работает на старшем порядке (AIX).
7f
7fdeadbeef
Не работает
Я думаю, что когда мы передаем 32-битный адрес и получаем в 64-битном, на платформе с прямым порядком байтов он получает в других 32-битных. Но я не уверен.
Пожалуйста, помогите мне понять, что происходит за этим. я не могу правильно написать первую строку программы здесь.
Большое спасибо
Энн