ฉันต้องการทำ:
int a = 255;
cout << a;
และให้มันแสดง FF ในผลลัพธ์ฉันจะทำสิ่งนี้ได้อย่างไร
ฉันต้องการทำ:
int a = 255;
cout << a;
และให้มันแสดง FF ในผลลัพธ์ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
ใช้:
#include <iostream>
...
std::cout << std::hex << a;
มีตัวเลือกอื่น ๆ อีกมากมายเพื่อควบคุมการจัดรูปแบบที่แน่นอนของหมายเลขเอาต์พุตเช่นศูนย์นำหน้าและตัวพิมพ์ใหญ่ / ตัวพิมพ์เล็ก
ios::fmtflags f(cout.flags()); out.flags(f);
std::cout.flags(f);
std::hexถูกกำหนดไว้ในที่มีอยู่โดย<ios> <iostream>แต่การใช้สิ่งต่าง ๆ เช่นstd::setprecision/std::setw/std::setfill/ etc คุณต้องรวม<iomanip>ไว้ด้วย
หากต้องการจัดการกระแสข้อมูลให้พิมพ์เป็นเลขฐานสิบหกให้ใช้เครื่องมือhexปรับแต่ง:
cout << hex << a;
โดยดีฟอลต์อักขระเลขฐานสิบหกจะถูกส่งออกเป็นตัวพิมพ์เล็ก หากต้องการเปลี่ยนเป็นตัวพิมพ์ใหญ่ให้ใช้ตัวuppercaseจัดการ:
cout << hex << uppercase << a;
หากต้องการเปลี่ยนเอาต์พุตกลับเป็นตัวพิมพ์เล็กในภายหลังให้ใช้เครื่องมือnouppercaseปรับแต่ง:
cout << nouppercase << b;
nouppercaseจะเปลี่ยนกลับมาส่งออกไปยังทศนิยม?
หากคุณต้องการพิมพ์เลขฐานสิบหกเดียวแล้วเปลี่ยนกลับเป็นทศนิยมคุณสามารถใช้สิ่งนี้:
std::cout << std::hex << num << std::dec << std::endl;
ฉันเข้าใจว่านี่ไม่ใช่สิ่งที่ OP ร้องขอ แต่ฉันก็ยังคิดว่ามันคุ้มค่าที่จะชี้ให้เห็นว่าต้องทำอย่างไรกับ printf ฉันมักจะชอบใช้มันมากกว่า std :: cout (แม้จะไม่มีพื้นหลัง C ก่อนหน้า)
printf("%.2X", a);
'2' กำหนดความแม่นยำ 'X' หรือ 'x' กำหนดกรณีและปัญหา
printf("hello\n") fprintf(stdout, "hello\n")มีประโยชน์มากขึ้นคุณสามารถส่งstdout(หรือstdinหรือstderr) ไปยังฟังก์ชันที่รับFILE*อาร์กิวเมนต์ได้
มีธงและหน้ากากหลายแบบที่คุณสามารถใช้ได้เช่นกัน โปรดดูhttp://www.cplusplus.com/reference/iostream/ios_base/setf/สำหรับข้อมูลเพิ่มเติม
#include <iostream>
using namespace std;
int main()
{
int num = 255;
cout.setf(ios::hex, ios::basefield);
cout << "Hex: " << num << endl;
cout.unsetf(ios::hex);
cout << "Original format: " << num << endl;
return 0;
}
std::hex ทำให้คุณได้รับการจัดรูปแบบเลขฐานสิบหก แต่เป็นตัวเลือก stateful หมายถึงคุณต้องบันทึกและเรียกคืนสถานะมิฉะนั้นจะส่งผลกระทบต่อผลลัพธ์ในอนาคตทั้งหมด
การสลับกลับอย่างไร้เดียงสาstd::decเป็นสิ่งที่ดีถ้านั่นคือสิ่งที่เคยมีมาก่อนซึ่งอาจไม่เป็นเช่นนั้นโดยเฉพาะอย่างยิ่งถ้าคุณกำลังเขียนห้องสมุด
#include <iostream>
#include <ios>
...
std::ios_base::fmtflags f( cout.flags() ); // save flags state
std::cout << std::hex << a;
cout.flags( f ); // restore flags state
ใช้std::uppercaseและstd::hexเพื่อจัดรูปแบบตัวแปรจำนวนเต็มที่aจะแสดงในรูปแบบเลขฐานสิบหก
#include <iostream>
int main() {
int a = 255;
// Formatting Integer
std::cout << std::uppercase << std::hex << a << std::endl; // Output: FF
std::cout << std::showbase << std::hex << a << std::endl; // Output: 0XFF
std::cout << std::nouppercase << std::showbase << std::hex << a << std::endl; // Output: 0xff
return 0;
}
cout << hex << a << dec;ให้มันเปลี่ยนกลับ