| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | ReadSerialSINT32 | (int&,unsigned int&,const unsigned char*,) |
Declared in file: hzCodec.h
Defined in file : hzCodec.cpp
Function Logic:
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 ;
}