Skip to content
Snippets Groups Projects
hexavigesimal.cpp 716 B
Newer Older
Jan Trávníček's avatar
Jan Trávníček committed
/*
 * Hexavigesimal.cpp
 *
 *  Created on: 19. 4. 2014
 *	  Author: Tomas Pecka
 */

#include "hexavigesimal.h"

namespace std {

Jan Trávníček's avatar
Jan Trávníček committed
unsigned fromBase26( string rep ) {
	// http://en.wikipedia.org/wiki/Hexavigesimal

	unsigned n = 0;
	for(char repSymbol : rep ) {
		unsigned remainder = repSymbol - 'A';
		if(remainder > 26)
			throw 1; //("Invalid argument"); //TODO fix
		n = n * 26 + remainder;
	}

	return n;
}

string toBase26( unsigned id ) {
Jan Trávníček's avatar
Jan Trávníček committed
	// http://en.wikipedia.org/wiki/Hexavigesimal

	string name;
	do {
Jan Trávníček's avatar
Jan Trávníček committed
		unsigned remainder = id % 26;
Jan Trávníček's avatar
Jan Trávníček committed
		name += ( char )( remainder + 'A' );
Jan Trávníček's avatar
Jan Trávníček committed
		id = (id - remainder) / 26;
	} while (id > 0);
Jan Trávníček's avatar
Jan Trávníček committed

	return string( name.rbegin( ), name.rend( ) );
}

} /* namespace conversions */