Ниже код программы на С++

#include <iostream>

using namespace std;
struct Struct /* ArhivStruct - структура архива */
{
unsigned char year; // год 1 байт (две последние цыфры)
unsigned char mon; // месяц 1 байт
unsigned int Err; // аварии 2 байта
float Vh; //объем (л) 4 байта
unsigned long Nar; //время работы за выбранные сутки в сек 4 байта
unsigned long SumNar; // время наработки на момент записи архива в сек 4 байта
double Vi; //объем нарастающий итог (л) 8 байт
}ArhivStruct;
int StrToHex(char *ldata, char *sdata,int slen) // строка -> hex
{ // куда, откуда, кол-во байт результата
int i,j,k;
for(i=0;i<slen;i++){
*ldata=0; k=4;
for(j=0;j<2;j++){
if(*sdata>0x2f && *sdata<0x3a) {*ldata+=(*sdata-0x30)<<k;}
else
if(*sdata>0x40 && *sdata<0x47) {*ldata+=(*sdata-0x37)<<k;}
else
if(*sdata>0x60 && *sdata<0x67) {*ldata+=(*sdata-0x57)<<k;}
else{
*sdata=0; return -1;
}
sdata++; k=0;
}
ldata++;
}
return 0;
}

int main()
{
string Data = "@01M088803002ACE73AE5DD140:C605$R"; // вход ФБ типа String
double struc;
int j=StrToHex((char*)&struc,(char*)&Data[10],8);
printf("%f",struc); // выход ФБ типа Real

return 0;
}