ในการเขียนโปรแกรม C++ การพิมพ์ค่าเลขฐานสิบหกเป็นข้อกำหนดทั่วไป ไม่ว่าจะทำงานกับที่อยู่หน่วยความจำ ดำเนินการ Bitwise หรือจัดการกับการแสดงข้อมูลเลขฐานสิบหก จำเป็นอย่างยิ่งที่จะต้องเข้าใจวิธีการต่างๆ เพื่อแสดงค่าฐานสิบหกอย่างมีประสิทธิภาพ บทความนี้จะสำรวจวิธีการและเทคนิคต่างๆ ในการพิมพ์ค่าเลขฐานสิบหกในภาษา C++ โดยให้ความกระจ่างเกี่ยวกับแอปพลิเคชันและกรณีการใช้งาน
การพิมพ์ค่าเลขฐานสิบหกโดยใช้ Std::hex
วิธีหนึ่งที่ตรงไปตรงมาในการพิมพ์ค่าเลขฐานสิบหกในภาษา C++ คือการใช้ตัวจัดการ “std::hex” ที่ได้รับจากส่วนหัว
#รวม
#รวม
int หลัก ( ) {
ค่าทศนิยม int = 907 ;
มาตรฐาน::cout << 'ค่าเลขฐานสิบหกคือ: ' << มาตรฐาน::hex << ค่าทศนิยม << มาตรฐาน::endl;
กลับ 0 ;
}
ในตัวอย่างนี้ ตัวจัดการ “std::hex” จะใช้กับสตรีมเอาท์พุต “std::cout” ก่อนที่จะพิมพ์จำนวนเต็ม “decimalValue” หลังจากพิมพ์ค่าเลขฐานสิบหกแล้ว สตรีมจะเปลี่ยนกลับเป็นการทำงานปกติ รหัสนี้สาธิตวิธีการพิมพ์ค่าเลขฐานสิบหกได้อย่างสมบูรณ์แบบโดยใช้เครื่องมือจัดการ “std::hex” ใน C++ นี่คือรายละเอียดของรหัส:
ส่วนหัว
ฟังก์ชั่นหลัก
“ค่าทศนิยม int = 907;” ประกาศตัวแปร “decimalValue” ประเภท “int” และกำหนดให้มีค่าทศนิยม 907
“std::cout << “ค่าเลขฐานสิบหกคือ: ” << std::hex << decimalValue << std::endl;” พิมพ์ “ค่าเลขฐานสิบหก:” ตามด้วยการแสดงเลขฐานสิบหกของ “ค่าทศนิยม”
“std::hex” สั่งให้สตรีมเอาต์พุตตีความค่าต่อไปนี้เป็นเลขฐานสิบหก ตัวแปร “decimalValue” มีค่าทศนิยมที่จะแปลงเป็นเลขฐานสิบหก “std::endl” จะแทรกอักขระขึ้นบรรทัดใหม่หลังจากพิมพ์ สุดท้ายนี้ โค้ดนี้จะพิมพ์ 'ค่าเลขฐานสิบหก: 38B' ดังที่คุณเห็นในตัวอย่างเอาต์พุตต่อไปนี้:
การพิมพ์ค่าเลขฐานสิบหกโดยใช้ตัวระบุรูปแบบ “%x”
สำหรับผู้ที่คุ้นเคยกับภาษาการเขียนโปรแกรม C ฟังก์ชัน “printf” จะพิมพ์ค่าเลขฐานสิบหกในภาษา C++ อย่างกระชับ แม้ว่า C++ จะเสนอแนวทาง
int หลัก ( ) {
ค่าทศนิยม int = 1256 ;
พิมพ์ฉ ( 'ค่าเลขฐานสิบหกที่มี printf คือ: %x \n ' , ค่าทศนิยม ) ;
กลับ 0 ;
}
ในตัวอย่างนี้ ตัวระบุรูปแบบ “%x” ภายในฟังก์ชัน “printf” ระบุว่าอาร์กิวเมนต์ที่เกี่ยวข้องควรพิมพ์เป็นเลขฐานสิบหก รหัสที่กำหนดเป็นตัวอย่างที่สมบูรณ์แบบของการพิมพ์ค่าเลขฐานสิบหกโดยใช้ “printf” ในภาษา C++ มาทำลายมันกัน:
ส่วนหัว
ฟังก์ชั่นหลัก
“ค่าทศนิยม int = 1256;” ประกาศและกำหนดค่าทศนิยม 1256 ให้กับตัวแปรจำนวนเต็มชื่อ 'decimalValue' “printf” ใน “printf(“ค่าเลขฐานสิบหกที่มี printf คือ: %x\n”, decimalValue);” คำสั่งเรียกฟังก์ชัน 'printf' เพื่อพิมพ์เอาต์พุตที่จัดรูปแบบแล้ว “%x” คือ “ตัวระบุรูปแบบ” ซึ่งระบุว่าอาร์กิวเมนต์ต่อไปนี้ควรพิมพ์เป็นเลขฐานสิบหกตัวพิมพ์เล็ก สุดท้าย “\n” จะแทรกอักขระขึ้นบรรทัดใหม่หลังจากพิมพ์ รหัสนี้ส่งออก 'ค่าเลขฐานสิบหกที่มี printf คือ 4e8' ไปยังคอนโซลตามที่เห็นในตัวอย่างเอาต์พุตต่อไปนี้:
การพิมพ์ค่า Hex ด้วย Padding
เมื่อต้องจัดการกับค่าเลขฐานสิบหก โดยเฉพาะที่อยู่หน่วยความจำ ความกว้างหรือช่องว่างภายในที่สม่ำเสมอมักเป็นที่ต้องการ ซึ่งสามารถทำได้โดยใช้เครื่องมือจัดการ “std::setw” ที่มาจากส่วนหัว
#รวม
int หลัก ( ) {
ค่าทศนิยม int = 47 ;
มาตรฐาน::cout << 'ค่าเลขฐานสิบหกที่มีช่องว่างภายในคือ: ' << มาตรฐาน::setw ( 8 ) << มาตรฐาน::hex << ค่าทศนิยม << มาตรฐาน::endl;
กลับ 0 ;
}
ในตัวอย่างนี้ std::setw(8) ตรวจสอบให้แน่ใจว่าค่าเลขฐานสิบหกถูกพิมพ์ด้วยความกว้างขั้นต่ำ 8 อักขระ สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับการจัดแนวค่าในคอลัมน์หรือที่อยู่หน่วยความจำ
ให้เราแยกโค้ดและทำความเข้าใจแต่ละบรรทัดทีละบรรทัด:
ส่วนหัว
ฟังก์ชั่นหลัก
“ค่าทศนิยม int = 47;” ประกาศและกำหนดค่าทศนิยม 47 ให้กับตัวแปรจำนวนเต็มชื่อ 'decimalValue'
“std::cout << “ค่าเลขฐานสิบหกที่มีการเติมคือ: ” << std::setw(8) << std::hex << decimalValue << std::endl;” คำสั่งพิมพ์เลขฐานสิบหกของ 47 โดยมีช่องว่างภายใน setw(8) “std::setw(8)” ใช้เครื่องมือจัดการ “std::setw” โดยมีอาร์กิวเมนต์ 8 โดยระบุความกว้างเอาต์พุตขั้นต่ำ 8 อักขระ
“std::hex” ใช้ตัวจัดการ “std::hex” ซึ่งบอกให้สตรีมตีความค่าถัดไปเป็นเลขฐานสิบหกตามที่อธิบายไว้ในตัวอย่างใดตัวอย่างหนึ่งที่กำหนด เอาต์พุตต่อไปนี้ถูกพิมพ์ไปยังคอนโซล:
การพิมพ์ค่าเลขฐานสิบหกของข้อมูลไบต์
เมื่อทำงานกับข้อมูลไบต์ เป็นเรื่องปกติที่จะแสดงแต่ละไบต์เป็นค่าเลขฐานสิบหกสองหลัก ซึ่งสามารถทำได้โดยตรวจสอบให้แน่ใจว่าตั้งค่าความกว้างเป็น 2 และใช้ 'std::setfill('0')' เพื่อเติมศูนย์นำหน้า ต่อไปนี้เป็นตัวอย่างที่จะช่วยให้คุณเข้าใจว่าการพิมพ์ค่าฐานสิบหกของข้อมูลไบต์สามารถทำได้อย่างไร:
#รวม#รวม
int หลัก ( ) {
ถ่าน byteData ที่ไม่ได้ลงนาม = 0xAB;
มาตรฐาน::cout << 'การแสดงข้อมูลไบต์เลขฐานสิบหกคือ: '
<< มาตรฐาน::setw ( 2 ) << มาตรฐาน::setfill ( '0' ) << มาตรฐาน::hex << static_cast < ภายใน > ( ไบต์ข้อมูล )
<< มาตรฐาน::endl;
กลับ 0 ;
}
ในที่นี้ “std::setw(2)” ทำให้แน่ใจว่าแต่ละไบต์จะแสดงด้วยความกว้างขั้นต่ำ 2 อักขระ และ “std::setfill('0')” ระบุว่าควรใช้เลขศูนย์นำหน้าเพื่อเติมความกว้าง
โปรแกรมที่กำหนดก่อนหน้านี้นี้สาธิตวิธีการขั้นสูงในการพิมพ์ค่าเลขฐานสิบหกในภาษา C ++ ด้วยการจัดรูปแบบเฉพาะ เรามาแยกย่อยเพื่อทำความเข้าใจกันดีกว่า:
ส่วนหัว
ฟังก์ชั่นหลัก
ในฟังก์ชันหลัก “byteData = 0xAB;” ที่ไม่ได้ลงนาม ถ่านถูกกำหนดไว้ซึ่งประกาศตัวแปรถ่านที่ไม่ได้ลงนามชื่อ 'byteData' และกำหนดค่าเลขฐานสิบหกเป็น '0xAB' ให้กับตัวแปรดังกล่าว คำสั่ง “std::cout << “การแสดงข้อมูลไบต์แบบเลขฐานสิบหกคือ: “:” จะส่งข้อความไปยังคอนโซลโดยใช้สตรีมเอาต์พุต
“<< std::setw(2) << std::setfill('0') << std::hex << static_cast
std::setw(2): กำหนดความกว้างเอาต์พุตขั้นต่ำเป็น 2 ตัวอักษร
std::setfill('0'): ระบุว่าช่องว่างภายในที่จำเป็นเพื่อให้มีความกว้างขั้นต่ำควรเติมด้วยอักขระ '0'
std::hex: มันบอกให้สตรีมตีความค่าถัดไปเป็นเลขฐานสิบหก
static_cast
std::endl: มันจะแทรกอักขระขึ้นบรรทัดใหม่หลังจากการพิมพ์
ผลลัพธ์ของโปรแกรมนี้ที่พิมพ์บนคอนโซลจะแสดงในส่วนย่อยต่อไปนี้:
บทสรุป
การพิมพ์ค่าเลขฐานสิบหกใน C++ เกี่ยวข้องกับการทำความเข้าใจเครื่องมือที่มีอยู่และการเลือกวิธีการที่เหมาะสมตามความต้องการเฉพาะ ไม่ว่าคุณจะเลือกใช้เครื่องมือจัดการ “std::hex” ฟังก์ชัน “printf” หรือการผสมผสานเครื่องมือการจัดรูปแบบสำหรับการเติมและศูนย์นำหน้า การมีความเข้าใจอย่างถ่องแท้ในเทคนิคเหล่านี้ถือเป็นสิ่งสำคัญสำหรับโปรแกรมเมอร์ C++ ด้วยการใช้วิธีการเหล่านี้อย่างรอบคอบ คุณจะมั่นใจได้ว่าค่าเลขฐานสิบหกของคุณจะแสดงอย่างถูกต้องและอยู่ในรูปแบบที่ดึงดูดสายตา ซึ่งส่งผลให้โค้ด C++ ของคุณอ่านง่ายและชัดเจนโดยรวม