2012-03-15 15 views
0

Cには存在しますがJavaでは使用できないデータ型がいくつかあります。私はそれらのいくつかを列挙し、それらの代用品をJavaで書いた。 - >短いCからJavaへのデータ型のマッピング

のunsigned short - > int型

はunsigned char * X - >ショート[]×

unsigned char型を:私はそれを正しく行っているか、いくつかの変更がなされるべきである場合には提案して下さい

のunsigned short * X - > INT []×

CHAR * X - >文字列

unsigned int型 - >ロング

+0

「代替」を定義します。 –

+0

@OliCharlesworth私はプロジェクトに取り組んでおり、私は同等の(変換の一種)のCコードをjavaに書く必要があります。 –

+1

しかし、Cのデータ型はJavaのものとは異なり、標準化されたサイズを持たないことに注意する必要があります。 –

答えて

1

unsigned charの場合は、Javaのcharも使用してください。これも符号なしです。他のものは、(Cで一般的に使用されるサイズを仮定して)注入型である限り、OKです。つまり、値が保持されますが、ポインタ/配列ではかなり複雑です。

+0

JavaのcharがUnicode文字を表しているために問題が発生する可能性があります。 –

+0

@Rog Matthews:任意にエンコードされたテキストデータは、Javaではバイト[]として表されます。 short []をStringに変換します。Cの標準では、charとbyteのサイズが同じであることが保証されているので、Cのunsigned charをJavaのsigned byteにマッピングするほうがよいでしょう。 –

+0

@Rog Matthews:もしバイトが8ビット以外のものなら、それはもちろん爆発するでしょう - そのようなアーキテクチャは存在しますが、それらに遭遇する可能性は低いです。 –

0

I以下

unsigned char型を使用する - > CHAR(16ビット)またはショート(15ビット)または/ *符号付き* /バイト(8ビット)

のunsigned short - > intまたは/ * signed */short。

はunsigned char * X - >バイト[] X

のunsigned short * X - >ショート[] X

CHAR * X - >文字列またはchar []またはバイトをラップするカスタムクラス[]

unsigned int型 - > longまたは/ *署名*/int型以前にあなたは符号なしの型を使用していたとき、あなたが署名したタイプを使用することができ、多くの場合

。多くの場合、軽微な回避策が必要ですが、何もする必要はありません。

+0

javaのcharはunsignedです! –

+0

これは当てはまりますが、データが8ビット文字の場合は、char、shortまたはbyteのいずれかを使用できます。 –

0

javaは バイト、プリミティブデータ型を、次のい
短い
int型 長い
unsigned char型フロート
ダブル
文字
ブール偽

* xのあなたは、文字列またはchar [を使用する必要があります]またはbyte [] unsigned charの場合は を使用し、unsigned intの場合はintまたはlongを使用できます(従属)

関連する問題