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;
}