안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요~
제가 C를 잘 모르는데 물어볼곳이 없어서
이렇게 염치 불구하고 질문좀 드립니다...
unsigned char MakecheckSum(char *data, int len)
{
int I;
unsigned char a;
a=0;
for(i=0;i<len;i++) a= char (a+*(data+i));
return a;
}
Checksum을 전송하기 위해 2 byte로 분할
chk1 = (checksum & 0xF0) >> 4 | 0x30
chk2 = (checksum & 0x0F) >> 0 | 0x30
위에 함수는 C로된 코드인데요...
안드로이드로 소켓통신하는 부분에서 이 체크섬이 필요해서요...
자바로 바꿔서 사용해야되는데 제가 C를 몰라서..;;
도움을 받고자 이렇게 질문을 올립니다.
위에 함수를 자바 소켓에서 사용할 수 있게 어떻게 바꾸나요...
답변 좀 꼭 부탁드립니다.




char (a+*(data+i))
여기서 char()는 뭔가요? 그리고 왜 2바이트로 나누죠? 1바이트 아닌가요?
아래는 예전에 사용했던 코드입니다. 문자지향프로토콜 만들어주는 겁니다. 만아래 sum, carry부분이 해당될거 같네요..
private static byte[] putData(byte[] data)
{
int sum = 0;
int carry = 0;
int size = data.length;
byte[] rPacket = new byte[size+6];
rPacket[0] = (byte)0x10;
rPacket[1] = (byte)0x02;
for(int i=0; i<size; i++)
{
rPacket[i+2] = data[i];
}
rPacket[size+4] = (byte)0x10;
rPacket[size+5] = (byte)0x03;
for(int i=0; i<size; i++)
{
sum += (int)data[i] & 0xFF;
}
while(sum >= 256)
{
sum -= 256;
carry++;
}
rPacket[size+3] = (byte)sum;
rPacket[size+2] = (byte)carry;
return rPacket;
}