Я понимаю маленький и большой порядок байтов, но что означает «машинный порядок байтов»?
Что означает машинный порядок байтов в пакете PHP?
Ответы (1)
В pack фраза "машинный порядок байтов" означает, что порядок следования байтов определяется текущая машина1
Сам PHP не дает никаких гарантий в отношении порядка байтов, в котором такие символы (например, S
, L
) кодируют данные, за исключением случаев, когда порядок касается текущей машины.
Поэтому будьте осторожны с использованием символов пакета "машинного порядка байтов" и рассмотрите эквивалентные части гарантированного порядка (например, n
, v
), если есть какие-либо сомнения1. Однако обратите внимание на спецификацию целевых данных, так как некоторые нелепые форматы, такие как [Microsoft] UUID, представлены в терминах "машинного порядка байтов", в то время как другие всегда имеют обратный порядок байтов или обратный порядок байтов.
1 x86/x64 всегда имеет обратный порядок байтов, но технически PHP может работать на машинах с прямым порядком байтов... где-то. Лучше всего выработать привычку быть явным и точным, чтобы избежать внезапного и загадочного «переставания работы» кода позже.