//The bitwise operators abstract away the endianness. //For example, the >> operator always shifts the bits towards the least significant digit. #include #include int main(void) { FILE *f1 = fopen("test1", "w"); FILE *f2 = fopen("test2", "w"); FILE *f3 = fopen("test3", "w"); uint8_t data[] = {0xAB, 0xCD}; size_t ret = fwrite(data, 1, 2, f1); printf("I wrote %lu items\n", ret); uint16_t x = 0xABCD; ret = fwrite(&x, 2, 1, f2); printf("I wrote %lu items\n", ret); // Portable way uint8_t low_byte = x & 0xFF; //0xABCD //10101011 11001101 //00000000 11111111 0xFF //00000000 11001101 uint8_t high_byte = x >> 8; //00000000 10101011 fputc(low_byte, f3); fputc(high_byte, f3); fclose(f1); fclose(f2); fclose(f3); return 0; }