このメッセージを(変更なしで)AMQPブローカーに転送するPonte(Node.js)アプリケーションにバイナリデータを送信するツールを使用しています。javaからjavascriptへの切り替え時にバイト配列が更新される理由
全体:Java - > JavaScript - > Java そして私はバイナリデータの奇妙な変換があります。
私はバイナリデータを準備
が、それはこのようになります設定:ここでは、彼らが表示されるために、HEX値である[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であることが分かります。
このデータは、JavaScriptからAMQPブローカー経由で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]
それはまだ前のように似ていますが、マイナスからプラスになったすべての小数は今、Javaでは
-17, -65, -67,
になりました私はバイト配列で作業しており、JavaScriptではバッファで作業しています。誰もこの奇妙な行動がどこから来たのか説明できますか?
私の問題についての詳細情報が必要な場合は教えてください。
ありがとうございました!
Javaは** signed **バイトです。何が起こっているのかを本当に理解するために。おそらく[mcve]を提供する必要があります – GhostCat
@GhostCatより一般的には、符号付き数字(=プリミティブ) – ControlAltDel