2

10 進数と他の基数との間の変換を可能にする C++ 構造またはテンプレート (任意のライブラリ内) はありますか (bitset ができるように) ?

4

1 に答える 1

6

はい、使用できますunsigned int

unsigned int n =   16; // decimal input
unsigned int m = 0xFF; // hexadecimal input

std::cout << std::dec << "Decimal: " << n << ", " << m << std::endl;
std::cout << std::hex << "Hexadecimal: 0x" << n << ", 0x" << m << std::endl;

Octal もサポートされていますが、他のベースについては、独自のアルゴリズムを作成するのが最善でした。これは、基本的に C++ の 3 行です。

std::string to_base(unsigned int n, unsigned int base)
{
    static const char alphabet[] = "0123456789ABCDEFGHI";
    std::string result;
    while(n) { result += alphabet[n % base]; n /= base; }
    return std::string(result.rbegin(), result.rend());
}

unsigned int from_base(std::string, unsigned int base)関数も同様です。

于 2012-01-15T13:57:06.090 に答える