업무일지/기술

[데이터타입] java unsigned로 받은 데이터 부호있는 signed로 처리

_leezoee_ 2022. 1. 6. 13:57

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