Beispiel #1
0
ddtoul_t :: ddtoul_t( char const *dotted )
   : netOrder_( 0 ),
     hostOrder_( 0 ),
     worked_( true )
{
   //
   // build in network order, then convert
   //
   unsigned char  byteId = 0 ;
   unsigned char *netBytes = (unsigned char *)&netOrder_ ;

   for( ; ( byteId < 4 ) && ( worked_ ) ; byteId++, netBytes++ )
   {
      unsigned long byteValue = 0 ;

      while( worked_ )
      {
         char const dig = *dotted++ ;
         if( ( '0' <= dig ) && ( '9' >= dig ) )
         {
            byteValue *= 10 ;
            byteValue += ( dig - '0' );
         }
         else if( '\0' == dig )
         {
            worked_ = ( 3 == byteId );
            break;
         }
         else if( '.' == dig )
         {
            worked_ = ( 3 > byteId );
            break;
         }
         else
            worked_ = false ;
      } // process segment

      if( worked_ )
      {
         worked_ = ( byteValue < 256 );
         if( worked_ )
            *netBytes = (unsigned char)byteValue ;
      }

   } // for each byte

   if( worked_ )
   {
      hostOrder_ = networkToHost( netOrder_ );
   }
   else
   {
      netOrder_ = 0 ;
   }
}
Beispiel #2
0
uint32_t hostToNetwork(uint32_t value)
{
	return networkToHost(value);
}