У меня есть приложение на стороне сервера, написанное в D, а мое клиентское приложение написано на C#. Я использую BinaryWriter для связи между ними, но у меня проблема с порядком байта.C# binary writer ushort bytes order
На самом деле порядок байтов не то же самое, например:
C# Клиент:
MemoryStream ms = new MemoryStream();
BinaryWriter writer = new BinaryWriter(ms);
writer.Write((ushort)0x01);
writer.Write("test");
Клиент Выход:
[1, 0, 4, 116, 101, 115, 116]
выход Сервер:
[0, 1, 0, 4, 116, 101, 115, 116]
Для кли первые два байта были инвертированы, а строка в моем приложении сервера закодирована с длиной ushort
, можно «изменить» поведение BinaryWriter или мне нужно создать мою собственную реализацию?
Edit: на стороне сервера пакет сериализатору: https://github.com/Adwelean/EmperadorServer/blob/master/source/vendor/cerealed/cerealiser.d
его не инвертировано. один ноль добавляется первым –
Если я пишу ushort с сервером, то байт-массив равен [0, 1], а с клиентом байтовый массив равен [1, 0] – Adwelean
Я думаю, что сервер использует большой порядковый номер и клиент мало использует endian order ... –