プログラミング言語Cの次期C2x(C23)標準ライブラリprintf
関数ファミリでは、変換指定子b
による2進数フォーマット出力がサポートされる。同時にscanf
関数ファミリやstrtoT
関数では0b
プレフィクス付き文字列入力がサポートされる。*1
// C2x #include <stdio.h> printf("%08b", 42u); // "00101010"
C++言語
C++20で追加されたstd::format
はバイナリ書式化指定子b
をサポート済み。
// C++20 #include <format> #include <iostream> std::cout << std::format("{:08b}", 42u); // "00101010"
C++17以前はstd::bitset
で手軽に済ませるか、書式化処理を自作する必要あり。
#include <bitset> std::cout << std::bitset<8>(42u);
関連URL
*1:提案文書N2630によれば、C2xでの2進数リテラルのサポート(→id:yohhoy:20210228)に合わせた機能追加とのこと。もっと早くからサポートしてくれ。