dnp3 메모리맵을 통해 읽은 데이터가 부호가 없는 unsigned 16비트(2바이트) 데이터라
-500 이라는 값을 받아야 되는데 65036 이런식으로 표기 되는 문제가 발생.
해당 기기는 C언어로 짜여있어서 이쪽 java 엔진과 데이터타입이 맞지 않음.
이런식으로 65036 으로 들어온 데이터를 hex스트링으로 변환 후 그걸 다시 Integer.parseInt("",16)을 통해 변환하고
그걸 마지막에 Int로 return 해주도록 ByteUtil에 함수를 만들어 두었다.
데이터 형식 범위는 아래 URL 참고
https://docs.microsoft.com/ko-kr/cpp/cpp/data-type-ranges?view=msvc-170
'업무일지 > 기술' 카테고리의 다른 글
[C]c#으로 된 샘플api 코드 실행중 dll로드에러 (0) | 2022.01.19 |
---|---|
[Java] static 남발금지 (0) | 2022.01.17 |
[Refactoring] 현재시점 통신드라이버 리펙토링 해야할 것들 (0) | 2022.01.12 |
[JNI] jni를 이용한 c 언어 라이브러리 사용(3차삽질) (0) | 2022.01.10 |
[SQL]쿼리조인시 기준이 되는 테이블 찾기 (0) | 2022.01.05 |