¿Cuándo usar hton / ntoh y cuándo convertir datos yo mismo?

para convertir una matriz de bytes de otra máquina que sea big endian, podemos usar:

long long convert(unsigned char data[]) {
  long long res;
  res = 0;
  for( int i=0;i < DATA_SIZE; ++i)
    res = (res << 8) + data[i];
  return res;
}

si otra máquina es little-endian, podemos usar

long long convert(unsigned char data[]) {
  long long res;
  res = 0;
  for( int i=DATA_SIZE-1;i >=0 ; --i)
    res = (res << 8) + data[i];
  return res;
}

¿Por qué necesitamos las funciones anteriores? ¿No deberíamos usar hton en el remitente y ntoh al recibir? ¿Es porque hton / nton es convertir un entero mientras que este convert () es para una matriz de caracteres?

Respuestas a la pregunta(2)

Su respuesta a la pregunta