-2

int と byte[] の間のキャストはとても簡単だと思い、値を byte[] にキャストしてから、他の関数で値を再キャストして int を取得しようとしました。たとえば、int x = 89; および byte [] y;、キャスト y=(byte[])x は機能しませんでした。どうやってやるの ?たとえば、私が欲しいもの:

                       in func1                          in func2
int x ;         x value is casted in the y        y is taken and x value is 
byte[] y;                                             extracted

       ------func1-----------  --------func2---------
       ^                    ^ ^                     ^
x = 33 ==feed into==> byte [] ===> extraction ===> 33 
4

2 に答える 2

1

Use ByteBuffer class

ByteBuffer b = ByteBuffer.allocate(4);
b.putInt(0xABABABAB);
byte[] arr = b.array();

BigInteger class.

byte[] arr = BigInteger.valueOf(0xABABABAB).toByteArray();
于 2013-05-05T10:50:41.327 に答える
0

Java でこの種のことを行うために型キャストを使用することはできません。これらは変換であり、プログラムで行う必要があります。

例えば:

    int input = ...
    byte[] output = new byte[4];
    output[0] = (byte) ((input >> 24) & 0xff);
    output[1] = (byte) ((input >> 16) & 0xff);
    output[2] = (byte) ((input >> 8) & 0xff);
    output[3] = (byte) (input & 0xff);

(この特定の変換を行うより洗練された方法があります。)

abyte[]から「何か他のもの」への移行も同様に変換です...「何か他のもの」が何であるかに応じて、可能である場合と不可能な場合があります。

int に戻す場合:

    byte[] input = ... 
    int output = (input[0] << 24) | (input[1] << 16) | (input[2] << 8) | input[3]

intこの Q&A は、 <->に対してこれを行う他の方法を提供しますbyte[]: Java 整数からバイト配列へ

于 2013-05-05T10:51:15.460 に答える