การพิมพ์ค่า Hex ใน C ++

Kar Phimph Kha Hex Ni C



ในการเขียนโปรแกรม C++ การพิมพ์ค่าเลขฐานสิบหกเป็นข้อกำหนดทั่วไป ไม่ว่าจะทำงานกับที่อยู่หน่วยความจำ ดำเนินการ Bitwise หรือจัดการกับการแสดงข้อมูลเลขฐานสิบหก จำเป็นอย่างยิ่งที่จะต้องเข้าใจวิธีการต่างๆ เพื่อแสดงค่าฐานสิบหกอย่างมีประสิทธิภาพ บทความนี้จะสำรวจวิธีการและเทคนิคต่างๆ ในการพิมพ์ค่าเลขฐานสิบหกในภาษา C++ โดยให้ความกระจ่างเกี่ยวกับแอปพลิเคชันและกรณีการใช้งาน

การพิมพ์ค่าเลขฐานสิบหกโดยใช้ Std::hex

วิธีหนึ่งที่ตรงไปตรงมาในการพิมพ์ค่าเลขฐานสิบหกในภาษา C++ คือการใช้ตัวจัดการ “std::hex” ที่ได้รับจากส่วนหัว โปรแกรมจัดการนี้สั่งให้สตรีมเอาต์พุตตีความค่าจำนวนเต็มเป็นเลขฐานสิบหกเมื่อพิมพ์ ลองนึกภาพคุณมีหีบสมบัติที่เต็มไปด้วยตัวเลข แต่แทนที่จะใช้ระบบทศนิยมปกติ พวกมันทั้งหมดเขียนด้วยภาษาลับของเลขฐานสิบหก เพื่อถอดรหัสรหัสเหล่านี้และเปิดเผยคุณค่าที่แท้จริง C++ เสนอเครื่องมือที่มีประโยชน์ที่เรียกว่า “std::hex” เคล็ดลับมหัศจรรย์นี้ในไลบรารี แปลงเอาต์พุตสตรีมของคุณให้เป็นวงแหวนตัวถอดรหัส โดยแปลเลขฐานสิบหกลึกลับเหล่านั้นให้เป็นทศนิยมที่คุ้นเคยได้ทันที







#รวม
#รวม
int หลัก ( ) {
ค่าทศนิยม int = 907 ;
มาตรฐาน::cout << 'ค่าเลขฐานสิบหกคือ: ' << มาตรฐาน::hex << ค่าทศนิยม << มาตรฐาน::endl;
กลับ 0 ;
}


ในตัวอย่างนี้ ตัวจัดการ “std::hex” จะใช้กับสตรีมเอาท์พุต “std::cout” ก่อนที่จะพิมพ์จำนวนเต็ม “decimalValue” หลังจากพิมพ์ค่าเลขฐานสิบหกแล้ว สตรีมจะเปลี่ยนกลับเป็นการทำงานปกติ รหัสนี้สาธิตวิธีการพิมพ์ค่าเลขฐานสิบหกได้อย่างสมบูรณ์แบบโดยใช้เครื่องมือจัดการ “std::hex” ใน C++ นี่คือรายละเอียดของรหัส:



ส่วนหัว



: ใช้สำหรับอินพุต/เอาต์พุตพื้นฐาน เช่น การพิมพ์ไปยังคอนโซล และจัดเตรียมเครื่องมือจัดการ “std::hex” เพื่อจัดรูปแบบเอาต์พุตเป็นเลขฐานสิบหก





ฟังก์ชั่นหลัก

“ค่าทศนิยม int = 907;” ประกาศตัวแปร “decimalValue” ประเภท “int” และกำหนดให้มีค่าทศนิยม 907



“std::cout << “ค่าเลขฐานสิบหกคือ: ” << std::hex << decimalValue << std::endl;” พิมพ์ “ค่าเลขฐานสิบหก:” ตามด้วยการแสดงเลขฐานสิบหกของ “ค่าทศนิยม”

“std::hex” สั่งให้สตรีมเอาต์พุตตีความค่าต่อไปนี้เป็นเลขฐานสิบหก ตัวแปร “decimalValue” มีค่าทศนิยมที่จะแปลงเป็นเลขฐานสิบหก “std::endl” จะแทรกอักขระขึ้นบรรทัดใหม่หลังจากพิมพ์ สุดท้ายนี้ โค้ดนี้จะพิมพ์ 'ค่าเลขฐานสิบหก: 38B' ดังที่คุณเห็นในตัวอย่างเอาต์พุตต่อไปนี้:

การพิมพ์ค่าเลขฐานสิบหกโดยใช้ตัวระบุรูปแบบ “%x”

สำหรับผู้ที่คุ้นเคยกับภาษาการเขียนโปรแกรม C ฟังก์ชัน “printf” จะพิมพ์ค่าเลขฐานสิบหกในภาษา C++ อย่างกระชับ แม้ว่า C++ จะเสนอแนวทาง และ 'std::hex' แต่ 'printf' จะให้แนวทางที่กระชับและตรงไปตรงมาเพื่อให้ได้ผลลัพธ์เดียวกัน

#รวม
int หลัก ( ) {
ค่าทศนิยม int = 1256 ;
พิมพ์ฉ ( 'ค่าเลขฐานสิบหกที่มี printf คือ: %x \n ' , ค่าทศนิยม ) ;
กลับ 0 ;
}


ในตัวอย่างนี้ ตัวระบุรูปแบบ “%x” ภายในฟังก์ชัน “printf” ระบุว่าอาร์กิวเมนต์ที่เกี่ยวข้องควรพิมพ์เป็นเลขฐานสิบหก รหัสที่กำหนดเป็นตัวอย่างที่สมบูรณ์แบบของการพิมพ์ค่าเลขฐานสิบหกโดยใช้ “printf” ในภาษา C++ มาทำลายมันกัน:

ส่วนหัว

: ส่วนหัวนี้ประกอบด้วยฟังก์ชัน “printf” และฟังก์ชันอินพุต/เอาต์พุตมาตรฐานอื่นๆ ส่วนหัว รวมอยู่ในชุดไลบรารีที่มาพร้อมกับ C++ โดยนำฟังก์ชันการทำงานจากไลบรารี ของภาษา C มาใช้ ทำให้ C++ สามารถใช้เทคนิคอินพุตและเอาต์พุตแบบคลาสสิกซึ่งแต่เดิมพบในภาษา C ผ่านการผนวกรวม

ฟังก์ชั่นหลัก

“ค่าทศนิยม int = 1256;” ประกาศและกำหนดค่าทศนิยม 1256 ให้กับตัวแปรจำนวนเต็มชื่อ 'decimalValue' “printf” ใน “printf(“ค่าเลขฐานสิบหกที่มี printf คือ: %x\n”, decimalValue);” คำสั่งเรียกฟังก์ชัน 'printf' เพื่อพิมพ์เอาต์พุตที่จัดรูปแบบแล้ว “%x” คือ “ตัวระบุรูปแบบ” ซึ่งระบุว่าอาร์กิวเมนต์ต่อไปนี้ควรพิมพ์เป็นเลขฐานสิบหกตัวพิมพ์เล็ก สุดท้าย “\n” จะแทรกอักขระขึ้นบรรทัดใหม่หลังจากพิมพ์ รหัสนี้ส่งออก 'ค่าเลขฐานสิบหกที่มี printf คือ 4e8' ไปยังคอนโซลตามที่เห็นในตัวอย่างเอาต์พุตต่อไปนี้:

การพิมพ์ค่า Hex ด้วย Padding

เมื่อต้องจัดการกับค่าเลขฐานสิบหก โดยเฉพาะที่อยู่หน่วยความจำ ความกว้างหรือช่องว่างภายในที่สม่ำเสมอมักเป็นที่ต้องการ ซึ่งสามารถทำได้โดยใช้เครื่องมือจัดการ “std::setw” ที่มาจากส่วนหัว นี่คือตัวอย่างเกี่ยวกับวิธีการพิมพ์ค่า HEX ด้วยช่องว่างภายใน โปรแกรมนี้สาธิตวิธีการพิมพ์ค่าเลขฐานสิบหกในภาษา C++ ด้วยการเติมโดยใช้ส่วนหัว และวิธีจัดการ

#รวม
#รวม
int หลัก ( ) {
ค่าทศนิยม int = 47 ;
มาตรฐาน::cout << 'ค่าเลขฐานสิบหกที่มีช่องว่างภายในคือ: ' << มาตรฐาน::setw ( 8 ) << มาตรฐาน::hex << ค่าทศนิยม << มาตรฐาน::endl;
กลับ 0 ;
}


ในตัวอย่างนี้ std::setw(8) ตรวจสอบให้แน่ใจว่าค่าเลขฐานสิบหกถูกพิมพ์ด้วยความกว้างขั้นต่ำ 8 อักขระ สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับการจัดแนวค่าในคอลัมน์หรือที่อยู่หน่วยความจำ

ให้เราแยกโค้ดและทำความเข้าใจแต่ละบรรทัดทีละบรรทัด:

ส่วนหัว

: มีฟังก์ชันอินพุต/เอาต์พุตพื้นฐาน เช่น สตรีม 'std::cout' สำหรับการพิมพ์

: มีเครื่องมือจัดการการจัดรูปแบบ เช่น “std::setw” ที่ใช้ในการแก้ไขลักษณะที่ปรากฏของเอาต์พุต

ฟังก์ชั่นหลัก

“ค่าทศนิยม 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 ++ ด้วยการจัดรูปแบบเฉพาะ เรามาแยกย่อยเพื่อทำความเข้าใจกันดีกว่า:

ส่วนหัว

: มีฟังก์ชันอินพุต/เอาท์พุตพื้นฐาน เช่น “std::cout” และ “std::hex” สำหรับการพิมพ์

: มีเครื่องมือจัดการการจัดรูปแบบ เช่น “std::setw” และ “std::setfill” ที่ใช้ในการแก้ไขลักษณะที่ปรากฏของเอาต์พุต

ฟังก์ชั่นหลัก

ในฟังก์ชันหลัก “byteData = 0xAB;” ที่ไม่ได้ลงนาม ถ่านถูกกำหนดไว้ซึ่งประกาศตัวแปรถ่านที่ไม่ได้ลงนามชื่อ 'byteData' และกำหนดค่าเลขฐานสิบหกเป็น '0xAB' ให้กับตัวแปรดังกล่าว คำสั่ง “std::cout << “การแสดงข้อมูลไบต์แบบเลขฐานสิบหกคือ: “:” จะส่งข้อความไปยังคอนโซลโดยใช้สตรีมเอาต์พุต

“<< std::setw(2) << std::setfill('0') << std::hex << static_cast (byteData) << std::endl;” ห่วงโซ่คำสั่งใช้ตัวจัดการหลายตัวเพื่อจัดรูปแบบเอาต์พุต

std::setw(2): กำหนดความกว้างเอาต์พุตขั้นต่ำเป็น 2 ตัวอักษร

std::setfill('0'): ระบุว่าช่องว่างภายในที่จำเป็นเพื่อให้มีความกว้างขั้นต่ำควรเติมด้วยอักขระ '0'

std::hex: มันบอกให้สตรีมตีความค่าถัดไปเป็นเลขฐานสิบหก

static_cast (byteData): จะแคสต์ข้อมูลอักขระที่ไม่ได้ลงนามเป็น 'int' ก่อนที่จะแปลงเป็นเลขฐานสิบหก สิ่งนี้ไม่จำเป็นในทางเทคนิค แต่สามารถใช้เพื่อให้สอดคล้องกับตัวเลือกการจัดรูปแบบบางอย่างได้

std::endl: มันจะแทรกอักขระขึ้นบรรทัดใหม่หลังจากการพิมพ์

ผลลัพธ์ของโปรแกรมนี้ที่พิมพ์บนคอนโซลจะแสดงในส่วนย่อยต่อไปนี้:

บทสรุป

การพิมพ์ค่าเลขฐานสิบหกใน C++ เกี่ยวข้องกับการทำความเข้าใจเครื่องมือที่มีอยู่และการเลือกวิธีการที่เหมาะสมตามความต้องการเฉพาะ ไม่ว่าคุณจะเลือกใช้เครื่องมือจัดการ “std::hex” ฟังก์ชัน “printf” หรือการผสมผสานเครื่องมือการจัดรูปแบบสำหรับการเติมและศูนย์นำหน้า การมีความเข้าใจอย่างถ่องแท้ในเทคนิคเหล่านี้ถือเป็นสิ่งสำคัญสำหรับโปรแกรมเมอร์ C++ ด้วยการใช้วิธีการเหล่านี้อย่างรอบคอบ คุณจะมั่นใจได้ว่าค่าเลขฐานสิบหกของคุณจะแสดงอย่างถูกต้องและอยู่ในรูปแบบที่ดึงดูดสายตา ซึ่งส่งผลให้โค้ด C++ ของคุณอ่านง่ายและชัดเจนโดยรวม