c/c++內建的輸入、輸出,對整數進製只支援三種:8進製、10進製、16進製。記得很久以前,有好幾次想用到2進製的輸入輸出,最終只好自已轉換。
昨天kaikai突然發了乙個post:
kaikai:
看看能不能把這個程式改得更短
?#include
<
cstdio
>
intmain()
return0;
}一眼看過去,呵呵,輸入輸出不可省,核心還是二進位制的轉換問題。於是想起以前曾經做過的事情,學習多了,直覺的可以用bitset來實現。開啟msdn,查詢bitset,嘿,果然有定義流輸入操作符。
寫了乙個測試:
#include
<
iostream
>
#include
<
bitset
>
using
namespace
std;
void
main()
呵呵,搞定了,輸入2進製,輸出10進製,完全正常。以後輸入2進製串的時候,就不需要自已轉換了。
補充:經過wang.lj 網友的提醒,才發現c庫中還有乙個函式,就是用來將數字串以指定的數制轉換成整數的:
i = strtol(s, &end, 2); //二進位製流轉換為16進製制字串
bitset 10進製轉2進製 2進製各種操作
bitset儲存二進位制數字。bitset就像乙個bool型別的陣列一樣,但是有空間優化。bitset中的每個元素都能單獨被訪問,例如對於乙個叫做a的bitset,表示式a 3 訪問了它的第4個元素,就像陣列一樣。但是輸出單獨訪問結果不能用printf,和bitset有關的輸出都用cout 另外bi...
彙編 十六進製制輸入轉換十進位制輸出(附加輸入檢測)
輸入乙個最大長度為4的十六進製制數,將其轉換成10進製輸出。其中我們需要檢測十六進製制輸入的正確性,比如大小寫 特殊字元和數字的判斷。程式分為兩個部分,首先是處理我們的輸入,以及通過除法計算十進位制數的過程。data segment use16 data ends stack segment use...
用批處理進行進製轉換
echo off setlocal enabledelayedexpansion set p a 請輸入要轉換的十進位制數 set aa a set p b 請輸入要轉換的幾進製?set str 0123456789abcde hex set a m a b set a n a b set n st...