9

私はそれを16進数にする方法を知っています:

unsigned char myNum = 0xA7;
clog << "Output: " std::hex << int(myNum) << endl;
// Gives:
//   Output: A7

myNumに1桁しか必要ない場合は、常に先行ゼロを出力するようにします。

unsigned char myNum = 0x8;
// Pretend std::hex takes an argument to specify number of digits.
clog << "Output: " << std::hex(2) << int(myNum) << endl;
// Desired:
//   Output: 08

では、実際にこれを行うにはどうすればよいですか?

4

5 に答える 5

14

私が望むほどきれいではありませんが、「塗りつぶし」文字を「0」に変更して作業を行うことができます。

your_stream << std::setw(2) << std::hex << std::setfill('0') << x;

ただし、塗りつぶしに設定した文字は「スティッキー」であるため、これを行った後は、のようなスペースに復元するまで「0」のままになりますyour_stream << std::setfill(' ');

于 2011-02-27T02:42:23.263 に答える
2

これは機能します:

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
  int x = 0x23;
  cout << "output: " << setfill('0') << setw(3) << hex << x << endl;
}

出力:023

于 2011-02-27T02:44:37.227 に答える
1
glog << "Output: " << std::setfill('0') << std::hex(2) << int(myNum) << endl;

参照:http ://www.arachnoid.com/cpptutor/student3.html

于 2011-02-27T02:42:01.533 に答える
1

<iomanip>のとマニピュレータをsetfill見てくださいsetw

于 2011-02-27T02:42:08.570 に答える
0

少し汚れていますが、マクロは私にとってはうまくいきました:

#define fhex(_v) std::setw(_v) << std::hex << std::setfill('0')

それで、あなたはそれを行うことができます:

#include <iomanip>
#include <iostream>
...
int value = 0x12345;
cout << "My Hex Value = 0x" << fhex(8) << value << endl;

出力:

私の16進値= 0x00012345

于 2014-05-22T22:41:58.917 に答える