프로그래밍(~2017)/자바

자바와 C언어간 통신 프로그램 설계시 데이터 변환 (int to byte, byte to int)

단세포소년 2011. 4. 27. 08:54
반응형

 public  byte[] inttobyte(int a)
 {
  byte b[]=new byte[4];
  
  b[0]=(byte)(a & 0x000000ff);
  b[1]=(byte)((a & 0x0000ff00)>>8);
  b[2]=(byte)((a & 0x00ff0000)>>16);
  b[3]=(byte)((a & 0xff000000)>>24);
  return b;
 }

 public  int bytetoint(byte b[])
 {
  return ((b[3]&0xff)<<24) |((b[2]&0xff)<<16) | ((b[1]&0xff)<<8) | ((b[0]&0xff)) ;
 }



서버는 리눅스로 클라이언트는 자바로 프로그래밍 중에 기본형 데이터를 서버에서 클라이언트로 혹은 클라이언트에서 서버로 전송할때 문제가 있어서 작성하였다.

리눅스에서 int를 바이트 단위로 보내고 자바의 DataOuputStream의 readInt 함수를 사용해서 읽었는데 값이 다르게 나왔었다.

왠지 자바에서 기본형을 보내거나 받을때 기본형과 매칭되는 클래스를 사용해서 직렬화를 하는것 같다. 그래서 값이 달라졌을 것이라 예상한다;;;
반응형