2012-03-30 4 views
0

私はクライアントサーバーアプリケーションを持っています。 C++上のクライアント、Java上のサーバ。
私はバイトストリーム形式のクライアントをサーバーに送り、サーバーからクライアントに送ります。
私がchar(-1)をC++から送ったとき、Javaでそれと等しい値を教えてください。
Cppコードでchar(-1)を取得するには、JavaからC++にどの値を送る必要がありますか?cpp:char(-1)in Java-char

+0

クライアントとサーバーの両方を作成する場合は、単に試してみてください。 – buc

答えて

2

バイトストリームを使用して書き込みを行っている場合、char(-1)は、通常、バイトストリームは符号なしバイトを送信するため、255として到着します。 ストリームの終わりを読み取ったときに読み取られる-1は、明示的に送信することはできませんが、ストリームを閉じることによってのみ送信されます。

+0

Cppのchar(-1)はJavaの255(byte)ですか? – Ilya

+0

私が言ったように、あなたはバイトストリームを使用しています、バイトストリームは符号なしです、 '-1'は'0xff'または '255'に等しい2sの補数を使ってバイナリエンコードされます。 Javaバイトは署名されているので、バイト配列に読み込むと '-1'が返されますが、Javaのすべてのストリーム' read() 'メソッドは符号なしバイトを返すので、' 255'が得られます。 – Neet

1

単一の答えはありません。 C++がデータをどのようにエンコードし、どのようにJavaがデータを解釈するかによって異なります。 char(-1)の最も一般的なエンコーディングは255です。これはC++では定義されていません。また、補完システムでは254としてエンコードすることもできます。また、Eliasコーディング、さまざまなASN.1エンコーディング、10進数、16進数など、さまざまな方法でデータをエンコードすることができます。

Javaエンド単純なchar-to-byteエンコーディングを前提としていても、バイトのデシリアライズの仕方やタイプに依存します。

+0

今私はJavaからCppにserializatorを書いていますので、この質問に答えます:) – Ilya

関連する問題