Все сводится к тому, как вы кодируете данные. Если вы обрабатываете его только как необработанную последовательность байтов, конфликт отсутствует; последовательность такая же. Когда дело обстоит с порядком байтов, когда интерпретирует порции данных как (например) целые числа.
Любой сериализатор , написанный с учетом переносимости , будет иметь определенный порядок байтов - например, в буферах протоколов (доступных как для Java, так и для C #) всегда используется little-endian независимо от вашего локального оборудования.
Если вы выполняете ручную запись в поток, использование таких вещей, как шифрование на основе сдвига (а не прямое копирование памяти), даст вам определенный порядок байтов.
Если вы используете предварительно консервированные сериализаторы платформы, вы зависите от реализации. Это может быть endian-safe, это может не быть (то есть это может зависеть от платформы на обоих концах). Например, класс .NET BitConverter
является не безопасным - обычно предполагается (неправильно), что он является прямым порядком байтов, но на некоторых платформах (и особенно в Mono на некоторых аппаратных средствах) он может быть большим -endian; следовательно, свойство .IsLittleEndian
.
Мой совет - использовать сериализатор, который обрабатывает все это для вас; p