[질문] 최상의 비트만 인식을 못합니다.

jjasook의 이미지

자바에서 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);

=---------------------------------------------

알려주세요.