Return TypeFunction nameArguments
hzEcodeReadSerialSINT32(int&,unsigned int&,const unsigned char*,)

Declared in file: hzCodec.h
Defined in file : hzCodec.cpp

Function Logic:

0:START 1:!ptr 2:nValue nLen 3:Return E_ARGUMENT 4:!(*ptr&0x80) 5:bNeg val 6:bNeg nLen nLen 7:nLen 8:2 9:val val

Function body:

hzEcode ReadSerialSINT32 (int& nValue, unsigned int& nLen, const unsigned char* ptr)
{
   uint32_t    val ;
   bool        bNeg ;
   if (!ptr)
       { nValue = 0; nLen = 0; return E_ARGUMENT ; }
   if (!(*ptr & 0x80))
   {
       bNeg = *ptr & 0x40;
       val = *ptr & 0x3f;
   }
   else
   {
       bNeg = *ptr & 0x10;
       nLen = (*ptr & 0x60)>>5;
       nLen += 2;
       switch  (nLen)
       {
       case 2:     val = ((ptr[0]& 0x0f)<<8);
                   val += ptr[1];
                   break ;
       case 3:     val = ((ptr[0]& 0x0f)<<16);
                   val += ((ptr[1]<< 8)+ ptr[2]);
                   break ;
       case 4:     val = ((ptr[0]& 0x0f)<<24);
                   val += ((ptr[1]<< 16)+(ptr[2]<< 8)+ ptr[3]);
                   break ;
       case 5:     _endian_import4(val, ptr) ;
                   break ;
       }
   }
   nValue = bNeg ? -val : val ;
   return E_OK ;
}