C# - 通过 byte[] 将双精度值传输到 Java 客户端
C# - double-Value transmitted to Java client via byte[]
我正在将双精度值从 C#-mqtt 客户端传输到 Java-mqtt 客户端。 Mqtt 要求它的有效载荷是一个字节 [] 所以我在 c# 中做以下事情:
byte[] vals = BitConverter.GetBytes(sub.value); // c#-sender
并通过 mqtt 将其传输到 java 客户端,后者又
double result = ByteBuffer.wrap(vals).getDouble(); // java-receiver
但是,虽然原始双精度值在 ~1 到 10 的范围内,但生成的 java 值在 10^-311 到 10^-312 的范围内。
我目前对c#不是很熟悉,找不到问题。
是偏移问题吗? LE/BE?我几乎被困住了,如果你能给我一个提示,我会很高兴的。
如评论中所述,尝试使用 ByteBuffer.order(ByteOrder)
方法翻转 ByteBuffer 上的字节顺序
我正在将双精度值从 C#-mqtt 客户端传输到 Java-mqtt 客户端。 Mqtt 要求它的有效载荷是一个字节 [] 所以我在 c# 中做以下事情:
byte[] vals = BitConverter.GetBytes(sub.value); // c#-sender
并通过 mqtt 将其传输到 java 客户端,后者又
double result = ByteBuffer.wrap(vals).getDouble(); // java-receiver
但是,虽然原始双精度值在 ~1 到 10 的范围内,但生成的 java 值在 10^-311 到 10^-312 的范围内。
我目前对c#不是很熟悉,找不到问题。
是偏移问题吗? LE/BE?我几乎被困住了,如果你能给我一个提示,我会很高兴的。
如评论中所述,尝试使用 ByteBuffer.order(ByteOrder)
方法翻转 ByteBuffer 上的字节顺序