C++ ไบต์อาร์เรย์

C Bit Xarrey



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

ตัวอย่างที่ 1:

“iostream” รวมอยู่ที่นี่ซึ่งเป็นไฟล์ส่วนหัวที่ช่วยในการใช้ฟังก์ชันในการป้อนข้อมูลหรือส่งออกข้อมูล ด้านล่างนี้ เราใช้เนมสเปซมาตรฐาน “std” และเรียกใช้ “main()” ในตอนนี้ ใน “main()” เราประกาศอาร์เรย์ไบต์ของชื่อ “mybyteArray[]” ด้วยประเภทข้อมูล “unsigned char” และยังเริ่มต้นด้วยองค์ประกอบห้าองค์ประกอบด้วย

จากนั้น เราใช้ 'cout' ซึ่งจะช่วยเรนเดอร์ข้อมูลที่ต้องการและวางลูป 'for' การวนซ้ำ 'for' นี้ช่วยในการรับองค์ประกอบของอาร์เรย์ไบต์ และ 'cout' ช่วยในการเรนเดอร์องค์ประกอบของอาร์เรย์ไบต์นี้พร้อมกับเลขฐานสิบหกในขณะที่เราวาง 'My byteArray[' << i << ']' และ 'hex' ในศาล







รหัส 1:

#รวม

ใช้เนมสเปซมาตรฐาน -

ภายใน หลัก - - -

ไม่ได้ลงนาม ถ่าน mybyteArray - - - - 0x31 - 0x32 - 0x33 - 0x34 - 0x35 - -

ศาล - 'องค์ประกอบของอาร์เรย์ไบต์คือ:' - สิ้นสุด -

สำหรับ - ภายใน ฉัน - 0 - ฉัน - ขนาดของ - mybyteArray - - ฉัน - - -

ศาล - 'byteArray ของฉัน [' - ฉัน - - - ฐานสิบหก - - ภายใน - mybyteArray - ฉัน - - สิ้นสุด -

-

กลับ 0 -

-

เอาท์พุท:



ผลลัพธ์ของโค้ดจะแสดงผลที่นี่ และอาร์เรย์ไบต์ที่เราสร้างในโค้ดก่อนหน้าก็จะปรากฏขึ้น







ตัวอย่างที่ 2:

โค้ดนี้ประกอบด้วยไฟล์ส่วนหัว 'iostream' ซึ่งอำนวยความสะดวกในการป้อนข้อมูลหรือเอาต์พุตโดยใช้ฟังก์ชันต่างๆ ด้านล่างนี้ เราเรียกฟังก์ชัน 'main()' และใช้เนมสเปซมาตรฐาน 'std' จากนั้นเราจะประกาศและเริ่มต้นอาร์เรย์ไบต์ด้วยชื่อ “byteA[]” และประเภทข้อมูล “char ที่ไม่ได้ลงนาม” เรากำหนดองค์ประกอบหกรายการให้กับอาร์เรย์ไบต์นี้ จากนั้นใช้ลูป 'for' เพื่อเข้าถึงแต่ละองค์ประกอบ เราใช้ “cout” ดังนั้นเลขฐานสิบหกของรายการในอาร์เรย์ไบต์นี้จะแสดงอยู่ด้านล่าง เนื่องจากเรารวมทั้ง “hex” และ ” byteArray[” << a << “]” ไว้ด้วย

ตอนนี้เราเปลี่ยนองค์ประกอบของอาร์เรย์ไบต์นี้โดยกำหนด '0x11' ให้กับ 'byteA[0]' จากนั้นเรากำหนด '0x46' และ '0x77' ให้กับ 'byteA[2]' และ 'byteA[4]' ตามลำดับ จากนั้นค่าเหล่านี้จะถูกแก้ไขจากอาร์เรย์ไบต์ที่เราสร้างขึ้น หลังจากนี้ เราจะใช้ลูป 'for' อีกครั้งเพื่อเข้าถึงองค์ประกอบทั้งหมดของอาร์เรย์ไบต์และ 'cout' ที่เพิ่มเข้ามาด้านล่าง ตอนนี้ ค่าที่แก้ไขจะแสดงที่นี่พร้อมกับเลขฐานสิบหก



รหัส 2:

#รวม

ใช้เนมสเปซมาตรฐาน -

ภายใน หลัก - - -

ไม่ได้ลงนาม ถ่าน ไบต์เอ - - - - 0x21 - 0x22 - 0x23 - 0x24 - 0x25 - 0x26 - -

ศาล - 'การเข้าถึงองค์ประกอบของอาร์เรย์ไบต์' - สิ้นสุด -

สำหรับ - ภายใน - 0 - - ขนาดของ - ไบต์เอ - - - - -

ศาล - 'ไบต์อาร์เรย์[' - - - - ฐานสิบหก - - ภายใน - ไบต์เอ - - - สิ้นสุด -

-

ศาล - - \n การเปลี่ยนองค์ประกอบของอาร์เรย์ไบต์:' - สิ้นสุด -

ไบต์เอ - 0 - - 0x11 -

ไบต์เอ - 2 - - 0x46 -

ไบต์เอ - 4 - - 0x77 -

สำหรับ - ภายใน - 0 - - ขนาดของ - ไบต์เอ - - - - -

ศาล - 'ไบต์อาร์เรย์[' - - - - ฐานสิบหก - - ภายใน - ไบต์เอ - - - สิ้นสุด -

-

กลับ 0 -

-

เอาท์พุท:

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

ตัวอย่างที่ 3:

ที่นี่เราใช้เมธอด 'transform()' เพื่อแปลงข้อมูลสตริงของเราให้เป็นอาร์เรย์ไบต์ในโค้ดนี้ ไฟล์ส่วนหัว “iostream”, “cstddef” และ “อัลกอริทึม” รวมอยู่ในโค้ดนี้ ไฟล์ส่วนหัวเหล่านี้ถูกนำเข้าเพื่อให้เราสามารถใช้ฟังก์ชันที่กำหนดไว้ได้อย่างง่ายดาย ข้างใต้นี้ เราวางเนมสเปซ 'std' และเรียกใช้เมธอด 'main()' จากนั้นเราเริ่มต้นตัวแปร “myString” ของประเภทข้อมูล “string” ด้วย “Hello World”

ตอนนี้เราเพิ่ม 'cout' เพื่อแสดงคำสั่งที่กำหนด ด้านล่างนี้ เราสร้างอาร์เรย์ไบต์ที่มีขนาดเดียวกับ 'myString.length()' หลังจากนี้ เราใช้ฟังก์ชัน 'transform()' ซึ่งจะวนซ้ำอักขระสตริงและวาง 'const char& character' และ 'return byte(อักขระ)' ซึ่งจะแปลงองค์ประกอบของสตริงให้เป็นไบต์และคัดลอกไปยังไบต์ อาร์เรย์

หลังจากนี้ เราใช้ลูป 'for' โดยที่เราเพิ่ม 'const byte& byte: byteArray' ซึ่งจะวนซ้ำบนอาร์เรย์ไบต์ จากนั้นเราเพิ่ม 'cout' ซึ่งแสดงองค์ประกอบทั้งหมดที่แปลงเป็นอาร์เรย์ไบต์

รหัส 3:

#รวม

#รวม

#รวม <อัลกอริทึม>

ใช้เนมสเปซมาตรฐาน -

ภายใน หลัก - -

-

สตริง myString - 'สวัสดีชาวโลก' -

ศาล - “สายคือ” - myString - สิ้นสุด - สิ้นสุด -

ศาล - 'สตริงที่แปลงเป็น ByteArray คือ ' - สิ้นสุด -

ไบต์ byteArray - myString. ความยาว - - - -

แปลง -

myString. เริ่ม - - -

myString. จบ - - -

byteArray -

- - - ค่าคงที่ ถ่าน - อักขระ - -

กลับ ไบต์ - อักขระ - -

- - -

สำหรับ - ค่าคงที่ ไบต์ - แบน - byteArray -

-

ศาล - ถึง_จำนวนเต็ม - ภายใน - - แบน - - - -

-

ศาล - สิ้นสุด -

กลับ 0 -

-

เอาท์พุท:

ขณะนี้สตริงและสตริงที่แปลงเป็นอาร์เรย์ไบต์จะแสดงผลในผลลัพธ์นี้ เราแปลงสตริงนี้เป็นอาร์เรย์ไบต์โดยใช้วิธี 'transform()' ในโค้ดของเรา

ตัวอย่างที่ 4:

มาเปลี่ยนข้อมูลสตริงของเราให้เป็นอาร์เรย์ไบต์โดยใช้วิธี 'memcpy()' ในโค้ดนี้ ตอนนี้โค้ดนี้รวมไฟล์ส่วนหัว 'iostream', 'cstddef' และ 'algorithm' เรานำเข้าไฟล์ส่วนหัวเหล่านี้เพื่อให้เราสามารถใช้ฟังก์ชันที่อธิบายไว้ในไฟล์เหล่านี้ได้อย่างง่ายดาย เราวางตำแหน่งเนมสเปซ 'std' ไว้ใต้สิ่งนี้และเรียกใช้ฟังก์ชัน 'main()' จากตำแหน่งนี้

ต่อไป เราจะเริ่มต้น 'Byte Array' ในตัวแปร 'stringData' เพื่อแสดงคำสั่งที่ให้มา ตอนนี้เรารวมคำสั่ง “cout” ไว้ด้วย ข้างใต้นั้น อาร์เรย์ไบต์ที่มีขนาดเท่ากับ “stringData.length()” จะถูกสร้างขึ้น เราใช้เมธอด “memcpy()” และส่งพารามิเตอร์สามตัวในฟังก์ชันนี้ ได้แก่ “ArrayOfBytes”, “stringData.data()” และ “stringData.length()” ตามลำดับ ฟังก์ชั่นนี้ช่วยในการคัดลอกหน่วยความจำของอักขระของสตริงไปยังอาร์เรย์ไบต์ที่เราประกาศ

ต่อไปนี้ เราใช้ลูป 'for' ซึ่งเราเพิ่ม 'const byte& my_byte: ArrayOfBytes' เพื่อสำรวจผ่านอาร์เรย์ไบต์ จากนั้น เราเพิ่มฟังก์ชัน 'cout' ซึ่งแสดงทุกองค์ประกอบที่ถูกแปลงเป็นอาร์เรย์ไบต์

รหัส 4:

#รวม

#รวม

#รวม

ใช้เนมสเปซมาตรฐาน -

ภายใน หลัก - -

-

สตริง stringData - 'ไบต์อาร์เรย์' -

ศาล - 'ข้อมูลสตริงคือ' - stringData - สิ้นสุด - สิ้นสุด -

ศาล - 'สตริงที่แปลงเป็น ByteArray ที่นี่ซึ่งก็คือ ' - สิ้นสุด -

ไบต์ ArrayOfBytes - stringData. ความยาว - - - -

เมมปี้ - อาร์เรย์ของไบต์ - stringData. ข้อมูล - - - stringData. ความยาว - - - -

สำหรับ - ค่าคงที่ ไบต์ - my_byte - อาร์เรย์ของไบต์ -

-

ศาล - ถึง_จำนวนเต็ม - ภายใน - - my_byte - - - -

-



กลับ 0 -

-

เอาท์พุท:

ผลลัพธ์นี้แสดงสตริงดั้งเดิมและสตริงที่ถูกแปลงเป็นอาร์เรย์ไบต์ เราใช้เมธอด 'memcpy()' ของโค้ดเพื่อแปลงสตริงนี้เป็นอาร์เรย์ไบต์

บทสรุป

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