2 PROJECT: FlowerSoft C++ library
3 FILE : stringconversion.cc
12 StringConversion::bin2hex_str( String bin_str )
15 Byte const* by_c_l = bin_str.by_c_l();
16 for ( int i = 0; i < bin_str.length_i(); i++ ) {
17 str += (char)nibble2hex_by( *by_c_l >> 4 );
18 str += (char)nibble2hex_by( *by_c_l++ );
24 StringConversion::hex2bin_i( String hex_str, String& bin_str_r )
26 if ( hex_str.length_i() % 2 )
27 hex_str = "0" + hex_str;
30 Byte const* by_c_l= hex_str.by_c_l();
32 while ( i < hex_str.length_i() ) {
33 int high_i = hex2nibble_i( *by_c_l++ );
34 int low_i = hex2nibble_i( *by_c_l++ );
35 if ( high_i < 0 || low_i < 0 )
36 return 1; // illegal char
37 bin_str_r += String( (char)( high_i << 4 | low_i ), 1 );
44 StringConversion::hex2bin_str( String hex_str )
47 // silly, asserts should alway be "on"!
48 // assert( !hex2bin_i( hex_str, str ) );
49 int error_i = hex2bin_i( hex_str, str );
55 StringConversion::hex2nibble_i( Byte by )
57 if ( by >= '0' && by <= '9' )
59 if ( by >= 'A' && by <= 'F' )
61 if ( by >= 'a' && by <= 'f')
67 StringConversion::int2hex_str( int i, int length_i, char ch )
73 str = ( i % 16 )["0123456789abcdef"] + str;
76 if ( str.length_i() < length_i )
77 str = String( ch, length_i - str.length_i() ) + str;
82 StringConversion::nibble2hex_by( Byte by )
84 if ( ( by & 0x0f ) <= 9 )
85 return ( by & 0x0f ) + '0';
87 return ( by & 0x0f ) - 10 + 'a';