Что касается htonl и ntohl . Когда любая из этих двух строк кода оценивается как ложная.
htonl(x) == ntohl(x);
htonl(ntohl(x)) == htonl(htonl(x));
Другими словами, когда эти две операции не эквивалентны на одной и той же машине ? Единственный сценарий, о котором я могу думать, - это машина, которая не работает с дополнением до 2 для представления целых чисел.
Является ли причина в значительной степени исторической, для ясности кода или для чего-то еще?
Существуют ли сегодня какие-либо современные архитектуры или среды, в которых эти преобразования в сетевой порядок байтов и обратно на одной и той же машине не являются одним и тем же кодом в любом направлении?