Newer
Older
* Created on: 19. 4. 2014
* Author: Tomas Pecka
unsigned n = 0;
for(char repSymbol : rep ) {
unsigned remainder = repSymbol - 'A';
if(remainder > 26)
n = n * 26 + remainder;
}
return n;
}
std::string toBase26( unsigned n ) {
std::string name;
name += ( char )( n % 26 + 'A' );
n = n / 26;
} while (n > 0);
return std::string( name.rbegin( ), name.rend( ) );
unsigned bijectiveFromBase26 ( std::string rep ) {
unsigned n = 0;
for (char repSymbol : rep ) {
unsigned remainder = repSymbol - 'A';
if(remainder > 26)
throw std::invalid_argument(rep);
n = n * 26 + remainder + 1;
}
return n;
}
std::string bijectiveToBase26(unsigned n) {
std::string name;
while(n > 0) {
--n;
name += (char) (n % 26 + 'A');
n /= 26;
}
return std::string(name.rbegin(), name.rend());