> На x86_64 sizeof(long) = sizeof(void*) = 8 байт. > а sizeof(int) = 4 байт. > > Хотите писать кроссплатформенный код - освойте введенные в C99 > (stdint.h) типы intN_t. > > То есть в вашем случае для 4-байтового знакового целого надо было > использовать тип int32_t а не long. А для беззнакового - uint32_t.