Windows บน IntelAMD เป็น little-endian ด้วยดังนั้นจึงไม่จำเป็นต้องแปลง endianness ตอนนี้ถ้าคุณสามารถแสดงบันทึกเฉพาะและที่คุณได้รับข้อมูลไบนารีจากนั้นจะง่ายต่อการตอบ คุณสามารถอ่านบันทึกใดก็ได้จากไฟล์ ถ้าระเบียนของคุณถูกประกาศดังนั้นจึงมีรูปแบบเดียวกันกับข้อมูลไบนารีคุณสามารถอ่านบันทึกทั้งหมดในครั้งเดียวได้ ถ้าไม่ใช่คุณจะต้องอ่านแต่ละฟิลด์แยกกัน โดยทั่วไปคุณสามารถอ่านระเบียนหรือแต่ละเขตข้อมูลของระเบียนจากสตรีมได้โดยใช้ข้อมูลที่มาจากซ็อกเก็ต TCP คุณสามารถเขียนลงใน TMemoryStream เป็นไบต์ได้ จากนั้นคุณสามารถรีเซ็ตตัวชี้ของสตรีมเริ่มต้นและอ่านข้อมูลตามที่แสดง ตามที่ดาวิดแสดงความคิดเห็นถ้าไบต์มาผ่านการเชื่อมต่อ TCP ในลำดับไบต์ของเครือข่ายแล้วมันจะทำให้การเรียกใช้แต่ละฟิลด์ผ่านหนึ่งฟังก์ชั่น WinSock ntohs () หรือ ntohl () หลังจากทั้งหมดข้างต้น แต่ก่อนรายการในบันทึกที่ใช้ ntohs () แปลง 2 ประเภทไบต์ในขณะที่ ntohl () แปลง 4 ประเภทไบต์ ในการส่งรายการให้ใช้ฟังก์ชันย้อนกลับ htons () และ htonl () ในแต่ละรายการในเรคคอร์ดก่อนส่ง (แยก) FWIW มันง่ายมากใน Win32 เพื่อเปลี่ยน endianness ใช้: เมื่อโอนจำนวนเต็ม binary ผ่านทางเครือข่ายเป็นสิ่งสำคัญเพื่อให้แน่ใจว่าระบบส่งและรับใช้รูปแบบเดียวกันหรือที่แปลงเสร็จแล้ว ถ้าคอมพิวเตอร์ Big Endian ส่งเลขฐานสองดังกล่าวข้างต้นไปยังคอมพิวเตอร์ Little Endian โดยไม่มีการแปลงระบบจะตีความว่าเป็นหมายเลข 513 เพื่อหลีกเลี่ยงปัญหาในเครือข่ายที่ต่างกันจำนวนไบนารีจะถูกแปลงเป็นรูปแบบเครือข่ายมาตรฐาน (Big Endian) ก่อนส่ง ฟังก์ชั่น: htons โฮสต์ไปยังเครือข่าย htonl สั้นไปยังเครือข่าย Long สามารถใช้เพื่อแปลงข้อมูลไบนารีไปยังรูปแบบมาตรฐานของเครือข่าย บันทึกทางประวัติศาสตร์: ชื่อ Big Endian และ Endian Little มาจาก Swifts new Gullivers Travels ในเรื่องนี้ Lilliputians ถูกแบ่งออกเป็น Big Endians และ Endians เล็กน้อยซึ่งขึ้นอยู่กับจุดสิ้นสุดของไข่ต้มที่พวกเขาเชื่อว่าควรจะเปิดขึ้น Boost C Libraries ค่าบิตบิท 16 บิตหรือ Lazy Argument ที่ประเมินค่าไบนารี 16 บิต ค่านี้อยู่เสมอใน endian ดั้งเดิม ค่าไบนารี 32 บิตหรือ Lazy Argument ที่ประเมินค่าไบนารี 32 บิต ค่านี้อยู่เสมอใน endian ดั้งเดิม ค่าไบนารี 64 บิตหรือ Lazy Argument ที่ประเมินค่าไบนารี 64 บิต ค่านี้อยู่เสมอใน endian ดั้งเดิม ค่าไบนารีลอยหรือ Lazy อาร์กิวเมนต์ที่ประเมินค่าไบนารีลอย ค่านี้อยู่เสมอใน endian ดั้งเดิม ค่าไบนารีคู่หรือ Lazy Argument ที่ประเมินค่าไบนารีคู่ ค่านี้อยู่เสมอใน endian ดั้งเดิม ความหมายของนิพจน์จะถูกกำหนดเฉพาะที่ที่มันแตกต่างจากหรือไม่ได้ถูกกำหนดไว้ใน PrimitiveParser
No comments:
Post a Comment