2014년 8월 6일 수요일

[Android] byte -> int , int -> byte 로의 변환



■ byte배열(물론 사이즈는 4)을 int로 바꾸는 메소드
?
1
2
3
4
5
6
7
8
public static int byte2Int(byte[] src) {
        int s1 = src[0] & 0xFF;
        int s2 = src[1] & 0xFF;
        int s3 = src[2] & 0xFF;
        int s4 = src[3] & 0xFF;
    
        return ((s1 << 24) + (s2 << 16) + (s3 << 8) + (s4 << 0));
}
 
 
■ long을 byte배열(물론 사이즈는 8)로 바꾸는 메소드 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
public static byte[] long2Bytes(long l) {
        byte[] buf = new byte[8];
        buf[0] = (byte)( (l >>> 56) & 0xFF );
        buf[1] = (byte)( (l >>> 48) & 0xFF );
        buf[2] = (byte)( (l >>> 40) & 0xFF );
        buf[3] = (byte)( (l >>> 32) & 0xFF );  
        buf[4] = (byte)( (l >>> 24) & 0xFF );
        buf[5] = (byte)( (l >>> 16) & 0xFF );
        buf[6] = (byte)( (l >>>  8) & 0xFF );
        buf[7] = (byte)( (l >>>  0) & 0xFF );
    
        return buf;
}


■ 이건 또 다른 방식입니다. 위에 것이랑 거의 같습니다.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
byte[] intToByte = new byte[4];  
  int a = 132;  
System.out.println("int를 byte 배열로 바꾼다.");  
intToByte[0] |= (byte)((a&0xFF000000)>>24);  
intToByte[1] |= (byte)((a&0xFF0000)>>16);  
intToByte[2] |= (byte)((a&0xFF00)>>8);  
intToByte[3] |= (byte)(a&0xFF);  
  
System.out.println("byte 배열을 int로 바꾼다");  
int result = 0;  
result |= (intToByte[0] & (int)0xFF)<<24;  
result |= (intToByte[1] & (int)0xFF)<<16;  
result |= (intToByte[2] & (int)0xFF)<<8;  
result |= (intToByte[3] & (int)0xFF);  
System.out.println("byte To Int is "+ result );


■ 16진수(Hex)로 된 Byte[] -> int로 변환하는 함수
?
1
2
3
4
5
6
7
8
9
10
11
12
byte[] hexbyte = new byte[3];
  
StringBuffer sb = new StringBufffer(hexbyte.length * 2);
String hexaDecimal;
  
for(int x = 0; x < hexbyte.length; x++)
{
     hexaDecimal = "0" + Intege.toHexString(0xff & hexbyte[x]);
     sb.append(hexaDecimal.substring(hexaDecimal.length()-2));
}
  
int decimal = Integer.parseInt(sb.toString(), 16);
 

댓글 없음:

댓글 쓰기