C++での8進数変換方法

C++での8進数変換方法

8進数リテラル

C++では、整数リテラルの前に 0 を付けることで8進数として扱えます。


    int octNumber = 0123; // 8進数の123 (10進数では 83)
    std::cout << octNumber << std::endl; // 出力: 83
    

整数を8進数に変換

C++で整数を8進数表記に変換する方法はいくつかあります。

std::oct を使う


    #include <iostream>

    int main() {
        int num = 83;
        std::cout << std::oct << num << std::endl; // 出力: 123
        return 0;
    }
    

sprintfを使う


    #include <cstdio>

    int main() {
        int num = 83;
        char buffer[10];
        sprintf(buffer, "%o", num);
        std::cout << buffer << std::endl; // 出力: 123
        return 0;
    }
    

文字列を8進数に変換

8進数の文字列を整数に変換するには、std::stoi を使う方法があります。


    #include <iostream>
    #include <string>

    int main() {
        std::string octStr = "123";
        int num = std::stoi(octStr, nullptr, 8);
        std::cout << num << std::endl; // 出力: 83
        return 0;
    }
    

8進数を整数に変換

8進数リテラルの変換は以下のように行います。


    int octNum = 0123; // 8進数
    std::cout << octNum << std::endl; // 出力: 83
    

ストリームを使った変換

std::stringstream を使うと、8進数変換をより柔軟に行えます。


    #include <iostream>
    #include <sstream>

    int main() {
        int num = 83;
        std::stringstream ss;
        ss << std::oct << num;
        std::string octStr = ss.str();
        std::cout << octStr << std::endl; // 出力: 123
        return 0;
    }
    

bitsetを使った方法

bitsetを使うことでバイナリ表現を利用しながら8進数へ変換できます。


    #include <iostream>
    #include <bitset>

    int main() {
        int num = 83;
        std::bitset<8> bin(num);
        std::cout << "Binary: " << bin << std::endl; // 出力: 1010011
        std::cout << "Octal: " << std::oct << num << std::endl; // 出力: 123
        return 0;
    }
    

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です