Convert a serialized integer into a 32-bit unsigned integer.

Return TypeFunction nameArguments
hzEcodeReadSerialUINT32(uint32_t&,hzChain::Iter&,)

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

Function Logic:

0:START 1:unknown 2:* 3:nValue items 4:Return E_OK 5:*zi&0xE0 6:0x80 7:* 8:val items val val

Function body:

hzEcode ReadSerialUINT32 (uint32_t& nValue)hzChain::Iter& zi, 
{
   //  Category: Number Serialization
   //  
   //  Convert a serialized integer into a 32-bit unsigned integer.
   //  
   //  Arguments: 1) nValue Indicated length or value
   //     2) zi  Chain iterator (start of indicator)
   //  
   //  Returns: E_ARGUMENT If no ptr is supplied
   //     E_OK  Operation successful
   uint32_t    val ;   //  Value
   if (!(*zi & 0x80))
   {
       nValue = *zi & 0x7f;
       zi++ ;
       return E_OK ;
   }
   switch  (*zi & 0xE0)
   {
   case 0x80://  100xxxxx: 2 byte value
               val = *zi & 0x1f;
               zi++ ;  val <<&eq; 8; val += (uchar) *zi ;
               break ;
   case 0xA0://  101xxxxx: 3 byte value
               val = *zi & 0x1f;
               zi++ ;  val <<&eq; 8; val += (uchar) *zi ;
               zi++ ;  val <<&eq; 8; val += (uchar) *zi ;
               break ;
   case 0xC0://  110xxxxx: 4 byte value
               val = *zi & 0x1f;
               zi++ ;  val <<&eq; 8; val += (uchar) *zi ;
               zi++ ;  val <<&eq; 8; val += (uchar) *zi ;
               zi++ ;  val <<&eq; 8; val += (uchar) *zi ;
               break ;
   case 0xE0://  11100000: Next 4 bytes are the value
               zi++ ;  val = (uchar) *zi ;
               zi++ ;  val <<&eq; 8; val += (uchar) *zi ;
               zi++ ;  val <<&eq; 8; val += (uchar) *zi ;
               zi++ ;  val <<&eq; 8; val += (uchar) *zi ;
               break ;
   }
   zi++ ;
   nValue = val ;
   return E_OK ;
}