Когда htonl (x )!= ntohl (x )? (Или когда преобразование в сетевой порядок байтов и обратно не эквивалентно на одном и том же компьютере?)

Что касается htonl и ntohl . Когда любая из этих двух строк кода оценивается как ложная.

 htonl(x) == ntohl(x);

 htonl(ntohl(x)) == htonl(htonl(x));

Другими словами, когда эти две операции не эквивалентны на одной и той же машине ? Единственный сценарий, о котором я могу думать, - это машина, которая не работает с дополнением до 2 для представления целых чисел.

Является ли причина в значительной степени исторической, для ясности кода или для чего-то еще?

Существуют ли сегодня какие-либо современные архитектуры или среды, в которых эти преобразования в сетевой порядок байтов и обратно на одной и той же машине не являются одним и тем же кодом в любом направлении?

7
задан selbie 23 July 2012 в 18:59
поделиться