Wann verwende ich hton / ntoh und wann konvertiere ich Daten selbst?

Um ein Byte-Array von einem anderen Computer zu konvertieren, der Big-Endian ist, können wir Folgendes verwenden:

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;
}

Wenn eine andere Maschine Little-Endian ist, können wir verwenden

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;
}

Warum brauchen wir die oben genannten Funktionen? sollten wir nicht hton beim sender und ntoh beim empfang verwenden? Liegt es daran, dass hton / nton eine Ganzzahl konvertiert, während convert () für ein char-Array ist?