[질문] 최상의 비트만 인식을 못합니다.
자바에서 int값을 바이트 배열에 저장한 후,
c서버로 보낸 후, 값을 읽어 들이면,
한 바이트에서 최상의 비트가 1로 셋팅이 되어 있으면 값을 제대로 읽지를 못합니다.
즉, 1~127 까지는 잘 읽고, 128~255 까지 제대로 못 읽고,
256~ 에서 또 최상위 비트가 셋팅이 되어 있으지 않은 숫자까지는 잘읽고
이러한 식입니다.
bit : 8 7 6 5 4 3 2 1
----------------------------------------
1 1 1 1 1 1 1 1
이렇게 셋팅이 되어 있으면, 63으로 인식이 됩니다.
즉, 1~6비트 까지만 읽어 들입니다.
byte[] header = new byte[4];
header[start_index] = (byte)((int_value>>24)& 0xff) ;
header[start_index+1] = (byte) ((int_value>>16)& 0xff) ;
header[start_index+2] = (byte) ((int_value>>8)& 0xff );
header[start_index+3] = (byte) ((int_value>>0)& 0xff );
String data = new String(header);
pw.print(data);
----------------------------------------------------------
이렇게 보내서, 다음과 같이 읽습니다.
typedef data_t{
int tid;
}data;
data Test_data;
read(fd, &Test_data, 4);
printf(" %d", Test_data.tid);
=---------------------------------------------
알려주세요.
댓글 달기