nmtysh.log

Tech系のネタや日々の独り言などを書いています。

Java の char は 2byte

まあ、表題の通りなんですが、Java の char型は 2byte です。

C言語だと char型は 1byte なんですがね。

 

なので、異なる言語間で通信したりするときには型のサイズが重要になってきますよ。と言うお話です。

 

C言語Webカメラの画像取得プログラムから TCP/IP ソケット通信で、 Java でこれを受けるというプログラムを書いていたのですが、 C言語側で char で write していたので、Java 側でも char で read していました。

実行すると数回やりとりしただけで止まってしまうんですよね。

固定量のデータを確実に送信・受信するようにしてるのに止まっちゃうんですよね。

それから、受信して表示した画像が変なんです。

 

気になって、Java での char のサイズを調べてみると 2byte になってました。

そりゃ途中で止まりますよ。データが来てないのに受信しようとするんですから。

 

結論として Java側は 1byte のサイズである byte型を使って受信するようにしました。