IEEE754 단정밀(32Bit) 데이타와 float 형 변수의 상호 변환 - C++
계측기와 데이타를 주고 받는 경우 계측기에서 측정된 데이타가 ASCii 형태로 들어 오는 경우가 있다. 이럴 경우 데이타의 갯수가 짧은 경우에는 상관이 없지만 데이타 갯수가 수십 ~ 수백개가 될 경우 통신 속도문제로 데이타를 주고 받는데 시간이 많이 걸리게 된다.
더군다나 ASCii 를 사용하게 되면 데이타는 더 길어질 수 밖에 없어서 시간이 더 많이 소요가 된다.
이럴때 데이타의 길이를 줄이기 위해 계측기가 IEEE754형태의 단정밀로 변환해서 데이타를 주고 받을 수 있는 경우가 있는데 이럴경우 데이타의 길이를 1/3로 줄일 수 있다. (13byte 아스키값을 4byte 로 변형)
예 : +7.282600E+01 <-> {0xE9} {0xA6} {0x91} {0x42}
변환 방법은 간단하게 Union 사용하면 된다.
union IEEE754_Float
{
unsigned char uData[4] ;
float fValue ;
} ;
IEEE754_Float data ;
data.fValue = 72.826 ; // float 변수에 값을 넣으면 uData에 각각의 바이트로 자동으로 변환되어 저장
IEEE754_Float data ;
data. uData[0] = 0xE9 ; // 각 바이트에 값을 넣으면 fValue 에 자동으로 변환된 float 값이 저장된다.
data. uData[1] = 0xA6 ;
data. uData[2] = 0x91 ;
data. uData[3] = 0x42 ;
'Software > C++ Builder' 카테고리의 다른 글
VARIANT 형의 변수를 사용할 때 주의할 점 (C++) (1) | 2025.03.11 |
---|---|
HEX String 을 Integer 값으로 변경하는 방법 (0) | 2023.06.07 |
윈도우 강제 Shut Down 시키기 (0) | 2023.06.07 |
c++ Builder 외부 에디터 연결 사용방법 (0) | 2023.03.31 |
Excel 설치없이 Excel 파일로 데이타 저장 C++ (0) | 2023.03.23 |