In pack the phrase "machine byte order" means that the endianess is determined by the current machine1
PHP itself makes no guarantees as to which endianness such characters (e.g. S
, L
) encode data, except as the ordering relates to the current machine.
Therefor, be cautious with using "machine byte order" pack characters and consider the guaranteed-order counter-parts (e.g. n
, v
) if there is every any doubt1. However, pay attention to the target data specification as some silly formats like [Microsoft] UUIDs are laid out in terms of "machine byte order" while others are always big-endian or always little-endian.
1 x86/x64 is always little-endian, but PHP could technically run on big-endian machines .. somewhere. It is best to get into the habit of being explicit and precise to avoid having code suddenly and mysteriously "stop working" later on.