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

안드로이드, C 소켓통신 프로그램 질문

0 추천
byte buff[] = new byte[1200];

byte[] tmpAddr = new byte[8];
System.arraycopy(buff, 0, tmpAddr, 0, 8);
//hubToRms.Sv = byteToDouble(tmpAddr, ByteOrder.LITTLE_ENDIAN);
hubToRms.Sv = ByteBuffer.wrap(tmpAddr).getDouble();

tmpAddr = new byte[4];
System.arraycopy(buff, 8, tmpAddr, 0, 4);
hubToRms.SvpH = byteToFloat(tmpAddr, ByteOrder.LITTLE_ENDIAN);
hubToRms.SvpH = ByteBuffer.wrap(tmpAddr).getFloat();
Log.d(TAG1, "SvpH -> " + hubToRms.SvpH);

System.arraycopy(buff, 12, tmpAddr, 0, 4);
    
 hubToRms.CipCC = byteToFloat(tmpAddr, ByteOrder.LITTLE_ENDIAN);
 hubToRms.CipCC = ByteBuffer.wrap(tmpAddr).getFloat();
//String CipCC = String.format("%.3f", hubToRms.CipCC);
 Log.d(TAG1, "CipCC -> " + hubToRms.CipCC);
   
 System.arraycopy(buff, 16, tmpAddr, 0, 4);
 hubToRms.cps = byteToFloat(tmpAddr, ByteOrder.LITTLE_ENDIAN);
 hubToRms.cps = ByteBuffer.wrap(tmpAddr).getFloat();
//String cps = String.format("%.3f", hubToRms.cps);
 Log.d(TAG1, "cps -> " +hubToRms.cps);

클라이언트(안드로이드) 쪽에서 값을 받아 바이트단위로 잘라서 각 데이터타입에 맞게 저장하려고 합니다.

처음에는 8바이트로 Double형 받아서 double형 변수에 저장했고, 나머지는 4바이트씩 float형으로 잘라서 각각 저장했습니다. 근데 로그찍어보니 값이 6.2626725E-28 이런식으로 나오는데.. 똑바로 한건지 잘 모르겠네요.. 원래는 값이 0.412 뭐 이정도로 작은값이 나와야 합니다.. 바이트 단위로 잘 잘라서 사용하고 있는건지.. 확인좀 부탁드립니다. 그리고 비슷한 예제나 자료도 부탁드려요~

 

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

1개의 답변

0 추천
aucd29 (218,390 포인트) 님이 2014년 11월 11일 답변
...