Я использую на клиенте C #, где я конвертирую двойные значения в байтовый массив.
Я использую Java на сервере и использую writeDouble и readDouble для преобразования двойных значений в байтовые массивы.
Проблема в том, что двойные значения из java в конце не являются двойными значениями в начале, передающими c #
writeDouble в Java Преобразует двойной аргумент в длинный с помощью метода doubleToLongBits, а затем записывает это длинное значение в базовый выходной поток как 8-байтовое количество, старший байт вначале.
DoubleToLongBits Возвращает представление указанного значения с плавающей запятой в соответствии с битовой компоновкой IEEE 754 "двойной формат".
Программа на сервере ожидает 64-102-112-0-0-0-0-0 из C #, чтобы преобразовать его в 1700.0, но он становится 0000014415464 из c # после того, как c # преобразовал 1700.0
это мой код в c #:
class User
{
double workingStatus;
public void persist()
{
byte[] dataByte;
using (MemoryStream ms = new MemoryStream())
{
using (BinaryWriter bw = new BinaryWriter(ms))
{
bw.Write(workingStatus);
bw.Flush();
bw.Close();
}
dataByte = ms.ToArray();
for (int j = 0; j < dataByte.Length; j++)
{
Console.Write(dataByte[j]);
}
}
public double WorkingStatus
{
get { return workingStatus; }
set { workingStatus = value; }
}
}
class Test
{
static void Main()
{
User user = new User();
user.WorkingStatus = 1700.0;
user.persist();
}
спасибо за помощь.