私のC++コードでは、int
を変換してバイトの中に入れる必要があります。私はchar
を使ってバイトを表現しています。 私のJavaコードでは、これはbyte
(ネットワークを介して送信されます)を読む必要があり、そのバイト(私が送信したもの)から適切なint
を取得する必要があります。JavaとC++の整数から整数
私はこのバイトが15未満であることを言及する必要があり、それは
しかし、Javaコードは、いくつかの試みに負の数を読んでいるために1つのバイトで十分だろう、と私は他の方法を試したとき、それは完全に私を与えました異なる数字。私はそれが大きな/リトルエンディアンの問題だと思う。
私が試した:
// C++
char bytes[255];
bytes[0] = myInt; // attempt 1
bytes[0] = myInt & 0xFF; // attempt 2
// ... send the byte array over the network
// JAVA
// receive the byte
int readInt = bytes[0]; //attempt 1
int readInt = bytes[0] & 0xFF; // attempt2
は、どのように私はこれを適切に行う必要があり、二つのアプリケーション(C++側とJava側が)同じUbuntuマシン上で実行されることを考えると?
エンディアンの問題のようですね。 – NathanOliver
あなたが書いて読んでいるものの長さがちょうど1バイトであれば、それはエンディアンの問題ではありません。値が間違いなく15未満であれば、私は試みがうまくいくと思うでしょう。試み2はエンディアンの問題に走ります。 – flu
あなたのデバッガはバイト単位で何を言っていますか?そうでなければ、できることは推測です。 – UKMonkey