Я использую метод DataOutputStream#WriteLong на языке Java-программирования для записи длинного потока, и мне нужно иметь возможность читать его с C#, используя класс BinaryReader из C#, чтобы попробовать для чтения данных BinaryReader подключен к NetworkStream
, который использует сокет TcpClient.C# - Чтение долгого времени от DataOutputStream Java
Метод java DataInputStream#ReadLong используется для чтения длинного значения, отправленного из DataOutputStream в Java, однако я пытаюсь использовать класс BinaryReader для чтения этого значения.
Вот метод, который я должен читать длинную переменную в C#
public static long ReadLong()
{
return binaryReader.ReadInt64();
}
Однако это вызывает несоответствие, например, я послал двух лонги через Java:
-8328681194717166436 || -5321661121193135183
и когда я прочитал их на C# Я получил следующие результаты:
-7186504045004821876||-5642088012899080778
Я могу воспроизвести это как многие раз, когда мне нравится приложение.
Так много дней с видом на байты, даже если это было прямо перед моим лицом. Спасибо за ссылку на «Endianness», это, безусловно, помогло мне понять немного. - Разве я не должен использовать здесь 'short, int, long' вместо' Int16, Int32, Int64'? – Hobbyist
короткие, int и long являются синонимами для Int16, Int32 и Int64, а также строка такая же, как и String. – Frank
Тем не менее, я читал, что Int16, Int32 и Int64 могут возвращать значение null, тогда как short, int и long не могут. – Hobbyist