Convert a serialized integer into a 32-bit unsigned integer.
| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | ReadSerialUINT32 | (uint32_t&,hzChain::Iter&,) |
Declared in file: hzCodec.h
Defined in file : hzCodec.cpp
Function Logic:
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 ;
}