我正在使用一种工具将二进制数据发送到Ponte(Node.js)应用程序,该应用程序将此消息(未经更改)转发给AMQP代理。为什么从java切换到javascript时更新字节数组
总的来说它是:Java - > JavaScript - > Java 而且我确实有一个奇怪的二进制数据转换。以下是他们的顺序出现的十六进制值:
当我准备二进制数据集,它看起来像这样:
[4, -30, -30, -9, -115, 0, 1, 0, 1, 0, 96, -32, 46, 0, 0, 0]
当它到达的JavaScript(老),它看起来像这样:
[4, 226, 226, 247, 141, 0, 1, 0, 1, 0, 96, 224, 46, 0, 0, 0]
这里负数小数转换为正数小数。如果您“减去”这些值,那么您可以看到它们的值为256
现在我通过AMQP代理将这些数据从JavaScript发回Java。
在Java中我的二进制数据现在看起来是这样的:
[4, -17, -65, -67, -17, -65, -67, -17, -65, -67, -17, -65, -67, 0, 1, 0, 1, 0, 96, -17, -65, -67, 46, 0, 0, 0]
它仍然像以前类似的,但所有的由负转正的小数现在转向
-17, -65, -67,
在Java我正在处理字节数组,并在JavaScript中使用Buffer。任何人都可以解释这种奇怪的行为来自哪里?
让我知道你是否需要关于我的问题的更多信息。
非常感谢!
Java具有**签名**字节;但为了真正理解正在发生的事情;您可能需要更普遍地提供[mcve] – GhostCat
@GhostCat,有符号数(=原语) – ControlAltDel