¿Cómo se escribe (de forma portátil) el orden de bytes de la red inversa?

Fondo

Al diseñar formatos de archivos binarios, generalmente se recomienda escribir enteros en orden de bytes de red. Para eso, hay macros comohtonhl(). Pero para un formato como WAV, en realidad se usa el formato little endian.

Pregunta

¿Cómo escribes de forma portátil los valores de little endian, independientemente de si la CPU en la que se ejecuta tu código es una arquitectura big endian o little endian? (Ideas: ¿Pueden las macros estándar?ntohl() yhtonl() ser utilizado "a la inversa" de alguna manera? ¿O debería el código simplemente probar el tiempo de ejecución si se está ejecutando en una CPU endian pequeña o grande y elegir la ruta de código adecuada?

Entonces la pregunta no es realmente acerca de los formatos de archivo, los formatos de archivo fueron solo un ejemplo. Podría ser cualquier tipo de serialización donde se requiera little endian "en el cable", como un protocolo de red (hereje).

Respuestas a la pregunta(3)

Su respuesta a la pregunta