마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

소켓통신 LITTLE_ENDIAN, BIG_ENDIAN

0 추천
hubToRms.Sv = ByteBuffer.wrap(recv).getDouble();

String str = new String(recv, 0, recv.length); // str ->

Log.d(TAG1, "결과 -> " + str);

C서버와 안드로이드 클라이언트로 더블형 데이터를 주고받고 있습니다.

자바에서는 hubToRms.Sv = ByteBuffer.wrap(recv).getDouble(); 로 값을 받고 있는데 값이 1.0102658E-28 처럼

지수형? 으로 나오네요..  그리고 str을 출력해보면 바이너리값이 출력되서 그런지 ◆◆◈ 이런식으로 나오네요..

getDouble로 하면 매번 같은값이 나와서.. str의 값을 바이트단위로 잘라서 double형으로 변환해줘야 할것같습니다.

C에서 LITTLE_ENDIAN으로 값을 보내줘서 안드로이드에서도 값을 받을때 LITTLE_ENDIAN으로 변환해서 뿌려줘야할것 같은데.. ENDIAN으로 변환하는 방법을 모르겠네요,,

아니면 LITTLE_ENDIAN형 바이트단위로 잘라서 더블형으로 바로 표현해줄 수 있는지..

도움부탁드립니다.

 

 

황금 (180 포인트) 님이 2014년 11월 6일 질문
황금님이 2014년 11월 6일 수정

1개의 답변

0 추천
int little2big(int i) {
    return((i&0xff)<<24)+((i&0xff00)<<8)+((i&0xff0000)>>8)+((i>>24)&0xff);
}
mamondebaltob (32,750 포인트) 님이 2014년 11월 9일 답변
...