// HenkanRadix.cpp : アプリケーションのエントリ ポイントを定義します。
//
#include <iostream>
#include <string>
#include <cstdint>
#include <cctype>
#include <algorithm>
const std::string Base = "0123456789abcdefghijklnmopqrstuvwxyz";
char NumberToChar(const std::uint64_t& N) {
return Base[N];
}
std::size_t CharToNumber(const char& C) {
return Base.find_first_of(std::tolower(C), 0);
}
std::uint64_t StringToNumber(std::string Value,const std::uint64_t& Radix) {
std::uint64_t Mul = 1;
std::uint64_t T = 0;
while (Value.size()){
std::size_t N = CharToNumber(Value.back())*Mul;
if (N == Base.npos) {
Value.pop_back();
continue;
}
T += N;
Mul *= Radix;
Value.pop_back();
}
return T;
}
std::string NumberToString(std::uint64_t Value,const std::uint64_t& Radix) {
std::string T;
std::uint64_t Mod = 0;
while (Value) {
Mod = Value % Radix;
Value /= Radix;
T.push_back(NumberToChar(Mod));
}
std::reverse(T.begin(), T.end());
return T;
}
bool MakeHoge(const std::string& Value,const std::uint64_t& Radix) {
std::uint64_t N = StringToNumber(Value, Radix);
for (std::size_t i = 2; i <= 36; i++) {
std::cout << i << ':' << NumberToString(N, i) << std::endl;
}
return true;
}
int main()
{
MakeHoge("deadbabe", 16);
return 0;
}
Ly8gSGVua2FuUmFkaXguY3BwIDog44Ki44OX44Oq44Kx44O844K344On44Oz44Gu44Ko44Oz44OI44OqIOODneOCpOODs+ODiOOCkuWumue+qeOBl+OBvuOBmeOAggovLwojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxjc3RkaW50PgojaW5jbHVkZSA8Y2N0eXBlPgojaW5jbHVkZSA8YWxnb3JpdGhtPgpjb25zdCBzdGQ6OnN0cmluZyBCYXNlID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xubW9wcXJzdHV2d3h5eiI7CgpjaGFyIE51bWJlclRvQ2hhcihjb25zdCBzdGQ6OnVpbnQ2NF90JiBOKSB7CglyZXR1cm4gQmFzZVtOXTsKfQoKc3RkOjpzaXplX3QgQ2hhclRvTnVtYmVyKGNvbnN0IGNoYXImIEMpIHsKCXJldHVybiBCYXNlLmZpbmRfZmlyc3Rfb2Yoc3RkOjp0b2xvd2VyKEMpLCAwKTsKfQoKc3RkOjp1aW50NjRfdCBTdHJpbmdUb051bWJlcihzdGQ6OnN0cmluZyBWYWx1ZSxjb25zdCBzdGQ6OnVpbnQ2NF90JiBSYWRpeCkgewoJc3RkOjp1aW50NjRfdCBNdWwgPSAxOwoJc3RkOjp1aW50NjRfdCBUID0gMDsKCXdoaWxlIChWYWx1ZS5zaXplKCkpewoJCXN0ZDo6c2l6ZV90IE4gPSBDaGFyVG9OdW1iZXIoVmFsdWUuYmFjaygpKSpNdWw7CgkJaWYgKE4gPT0gQmFzZS5ucG9zKSB7CgkJCVZhbHVlLnBvcF9iYWNrKCk7CgkJCWNvbnRpbnVlOwoJCX0KCQlUICs9IE47CgkJTXVsICo9IFJhZGl4OwoJCVZhbHVlLnBvcF9iYWNrKCk7Cgl9CglyZXR1cm4gVDsKfQoKc3RkOjpzdHJpbmcgTnVtYmVyVG9TdHJpbmcoc3RkOjp1aW50NjRfdCBWYWx1ZSxjb25zdCBzdGQ6OnVpbnQ2NF90JiBSYWRpeCkgewoJc3RkOjpzdHJpbmcgVDsKCXN0ZDo6dWludDY0X3QgTW9kID0gMDsKCXdoaWxlIChWYWx1ZSkgewoJCU1vZCA9IFZhbHVlICUgUmFkaXg7CgkJVmFsdWUgLz0gUmFkaXg7CgkJVC5wdXNoX2JhY2soTnVtYmVyVG9DaGFyKE1vZCkpOwoJfQkKCXN0ZDo6cmV2ZXJzZShULmJlZ2luKCksIFQuZW5kKCkpOwoKCXJldHVybiBUOwp9Cgpib29sIE1ha2VIb2dlKGNvbnN0IHN0ZDo6c3RyaW5nJiBWYWx1ZSxjb25zdCBzdGQ6OnVpbnQ2NF90JiBSYWRpeCkgewoJc3RkOjp1aW50NjRfdCBOID0gU3RyaW5nVG9OdW1iZXIoVmFsdWUsIFJhZGl4KTsKCglmb3IgKHN0ZDo6c2l6ZV90IGkgPSAyOyBpIDw9IDM2OyBpKyspIHsKCQlzdGQ6OmNvdXQgPDwgaSA8PCAnOicgPDwgTnVtYmVyVG9TdHJpbmcoTiwgaSkgPDwgc3RkOjplbmRsOwoJfQoKCXJldHVybiB0cnVlOwp9CgoKaW50IG1haW4oKQp7CgoJTWFrZUhvZ2UoImRlYWRiYWJlIiwgMTYpOwoKICAgIHJldHVybiAwOwp9Cgo=