どのように私はJavaでuint8_t配列を宣言することができます

conryyy:

配列は、そのようなものになりますので、私は、入力パラメータとしてuint8_t配列を必要とする私のDLL内のC ++の機能を持っています。

uint8_t input[input_length] = { 0x30, 0x41, 0x80, 0x8A...}; 

私はJavaでuint8_t配列をレコード生成しなければならないことを意味JNAとJavaでこの機能を使用したいです。私の最初のアプローチは、のようなバイト配列を作成することでした。

byte[] input = { 0x30, 0x41, 0x80, 0x8A...}; 

しかし、私はC ++でuint8_t変数は、0から255までの範囲を持っているが、Javaのバイトの変数が-128..127の範囲を持っており、あなたが見ることができるように、この配列のような(127を超えている値が含まれていることに気づきましたここに私のJavaの宣言を意味0x8A)は、有効ではありません。だから私の質問は、uint8_tと等価であるJavaでどのようなタイプですか?

rustyx:

Javaは符号なしの型を持っていません。しかし、それはJavaで署名オーバーフローが2の補数として定義されているので、あなただけ渡すことができ、大きな問題ではないのですbyteJNAが期待する場所にuint8_tそれはで動作する唯一のビット不便です:

byte[] input = { 0x30, 0x41, (byte)0x80, (byte)0x8A...};

読むにuint8_t戻って、あなたは何だろう(x & 0xFF)として、結果を符号拡張と仕事をストリップしますint

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=183481&siteId=1