Почему зеркальное отражение сделано на данных из Обратного порядка байтов прежде, чем сохранить в LE?

Соединенный из kernel.org:

KNL     Is a kernel start-up parameter.

init=   [KNL]
        Format: 
        Run specified binary instead of /sbin/init as init
        process.

rw      [KNL] Mount root device read-write on boot

0
14.04.2019, 12:13
2 ответа

htonl() и ntohl() функции в библиотеке C с обратным порядком байтов на самом деле ничего не делают (они - "нет" s). Таким образом, тот же код может использоваться и на БЫТЬ и на машины LE; скомпилированный с lib C на машине LE, те функции зеркально отразят байты, но на БЫТЬ машиной, они оставят их тем же, так как сетевой порядок байтов является обратным порядком байтов, и хост уже является обратным порядком байтов.

Другими словами, в Вашем примере, БЫТЬ машиной никогда ничего не изменяет. Только машина LE B делает.

2
28.01.2020, 02:37
  • 1
    Ya. Почему машина LE т.е. B зеркально отражает данные полученными? Почему наклон это хранит как таковой. –  Subi Suresh 22.04.2013, 20:51
  • 2
    Поскольку это - прямой порядок байтов, так, чтобы был путь, это хранит данные. Если это не сделает этого, когда то значение будет использоваться впоследствии, это будет неправильно, потому что байты являются обратными. То, почему существует два стиля, я предполагаю исторический вопрос..., по-видимому, обратный порядок байтов существовал первый en.wikipedia.org/wiki/Little_endian#History, но прямой порядок байтов является оптимизацией аппаратного уровня. –  goldilocks 22.04.2013, 20:56
  • 3
    > я подвожу итог от исходных данных, которые Вы дали. То, что когда-либо машина всегда является данными, хранится как байт 0 1-х, байт, 2-секундный и так далее. Так как B является LE, он должен сохранить в обратном порядке A.so, мы используем htons (), так, чтобы байт 0 был 11 byte1, будет 22, byte2 будет 33, и байт 4 будет 44. Действительно ли я прав? никакая потребность волноваться о внутренних представлениях в LE и БЫТЬ. –  Subi Suresh 22.04.2013, 21:01
  • 4
    Да, пока Вы используете htonl/ntohl прежде, чем передать/после того, как получение, Вы не должны волноваться о внутреннем представлении. Даже при том, что большинством машин в Интернете является, вероятно, LE, БЫТЬ сетевой порядок гарантировать последовательную методологию. Помните, все это только относится к адресам, используемым в заголовках пакета IP - фактические данные в передаче IP структурированы согласно любым протоколам более высокого уровня, используются. Таким образом, это не все, это - просто определенные биты (адрес, номер порта). –  goldilocks 22.04.2013, 21:09

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

Как аналогия, вообразите себя, читая мангу, распечатанную исходным японским способом (т.е. страница, обычно являющаяся последним существом на самом деле первое). Если Вы не знаете об этом факте и не "зеркально отражаете" книгу, Вы просто не можете понять историю.

0
28.01.2020, 02:37

Теги

Похожие вопросы