4

私がこれを尋ねているとは本当に信じられませんが、私が読んだものはすべて、intからバイト、文字列からバイトなどに変換されています。私は文字通り、バイト配列にバイトを挿入しようとしています。または、バイト配列を int ではなくバイトで初期化します。

byte[] header = {0x8b, 0x1f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03};

コンパイラは、それらが int であると不平を言います。バイトを挿入しようとしています。

4

4 に答える 4

9

byte範囲の符号付き整数です[-128,127]0x8b139dであるため、バイトにキャストする(byte)0x8bか、適切な範囲の値を使用する必要があります ( へのキャストと-0x75同等)。0x8bbyte

                                                                                        

于 2012-10-28T22:32:23.877 に答える
3

コンパイラは整数などのリテラルを脅かす0x8bため、明示的にバイトにキャストする必要があります

byte[] header = { (byte) 0x0b, (byte) 0x1f };
于 2012-10-28T22:33:16.153 に答える
3

バイトは符号付き整数であるため、1270x8bを超えることはできません。したがって、大きすぎます。

参照

于 2012-10-28T22:34:07.027 に答える
0
public static byte[] bytes(byte... bytes){ return bytes; }

byte[] header=bytes(0x8b, 0x1f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03);
于 2012-10-28T23:36:44.780 に答える