2013-05-05 2 views
-2

int와 byte [] 사이의 캐스팅이 쉽고 바이트 []로 값을 캐스팅하려고 시도한 다음 값을 다시 캐스팅하려고했습니다. int를 얻기위한 다른 함수에서. 예 : int x = 89; 및 바이트 [] y; 주조 y = (바이트 []) x, 작동하지 않습니다. 어떻게하면됩니까? 내가 무엇을 가지고 예를 들어, 원하는 :int를 byte []로 변환하고 byte []에서 값을 다시 캐스팅하는 방법

     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 

답변

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); 

byte[]에서가는 (.이 특정 변환을 수행하는 더 우아한 방법이 있습니다) "뭔가 다른"변환이 ... 유사하다 할 수도 있고 "다른 것"이 무엇인지에 따라 가능하지 않을 수도 있습니다.

변환 다시하는 int에

:

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

이 Q & A는 int <이 작업을 수행 할 수있는 다른 방법을 제공합니다 ->byte[] : Java integer to byte array

+0

뭔가 다른 내 사건입니다. 가능한가? – user2349809

1

사용 ByteBuffer 클래스

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

BigInteger 클래스입니다.

+0

하지만 내 번호는 형태가 아닌 0xABABABAB입니다. – user2349809

관련 문제