2 PROJECT: FlowerSoft C++ library
3 FILE : stringconversion.cc
12 StringConversion::bin2hex_str( String bin_str )
15 Byte const* byte_c_l = bin_str.byte_c_l();
16 for ( int i = 0; i < bin_str.length_i(); i++ ) {
17 str += (char)nibble2hex_by( *byte_c_l >> 4 );
18 str += (char)nibble2hex_by( *byte_c_l++ );
24 StringConversion::bin2int_i( String bin_str )
26 assert( bin_str.length_i() <= 4 );
29 for ( int i = 0; i < bin_str.length_i(); i++ ) {
31 result_i |= bin_str[ i ];
38 StringConversion::hex2bin_i( String hex_str, String& bin_str_r )
40 if ( hex_str.length_i() % 2 )
41 hex_str = "0" + hex_str;
44 Byte const* byte_c_l= hex_str.byte_c_l();
46 while ( i < hex_str.length_i() ) {
47 int high_i = hex2nibble_i( *byte_c_l++ );
48 int low_i = hex2nibble_i( *byte_c_l++ );
49 if ( high_i < 0 || low_i < 0 )
50 return 1; // illegal char
51 bin_str_r += String( (char)( high_i << 4 | low_i ), 1 );
58 StringConversion::hex2bin_str( String hex_str )
61 // silly, asserts should alway be "on"!
62 // assert( !hex2bin_i( hex_str, str ) );
63 int error_i = hex2bin_i( hex_str, str );
69 StringConversion::hex2nibble_i( Byte by )
71 if ( by >= '0' && by <= '9' )
73 if ( by >= 'A' && by <= 'F' )
75 if ( by >= 'a' && by <= 'f')
81 StringConversion::int2hex_str( int i, int length_i, char ch )
87 str = ( i % 16 )["0123456789abcdef"] + str;
90 if ( str.length_i() < length_i )
91 str = String( ch, length_i - str.length_i() ) + str;
96 StringConversion::nibble2hex_by( Byte by )
98 if ( ( by & 0x0f ) <= 9 )
99 return ( by & 0x0f ) + '0';
101 return ( by & 0x0f ) - 10 + 'a';