Wednesday 19 July 2017

ขยาย Ascii รหัส ไบนารี ตัวเลือก


Ascii vs. Binary Files คำแนะนำคนส่วนใหญ่แบ่งประเภทไฟล์ออกเป็นสองประเภทคือไฟล์ไบนารีและไฟล์ ASCII คุณเคยทำงานร่วมกับทั้งสองอย่างแล้ว โปรแกรมที่คุณเขียน (CCPerlHTML) เกือบจะแน่นอนไฟล์ ASCII ไฟล์ ASCII หมายถึงไฟล์ที่ประกอบด้วยอักขระ ASCII โดยปกติจะสร้างโดยใช้โปรแกรมแก้ไขข้อความเช่น emacs, pico, vi, Notepad เป็นต้นมีบรรณาธิการนักเล่นเกมออกมาเขียนโค้ด แต่อาจไม่สามารถบันทึกเป็น ASCII ได้เสมอ ในฐานะที่เป็นไฟล์ข้อความ ASCII ดูเหมือนจะเป็นแบบอเมริกันเป็นศูนย์กลางมาก หลังจากที่ทุกอย่าง A ใน ASCII ย่อมาจาก American อย่างไรก็ตามสหรัฐดูเหมือนจะครองตลาดซอฟต์แวร์และมีประสิทธิภาพจึงเป็นมาตรฐานสากล วิทยาการคอมพิวเตอร์เป็นเรื่องเกี่ยวกับการสร้าง abstractions ดี บางครั้งก็ประสบความสำเร็จและบางครั้งก็ไม่ได้ abstractions ดีทั้งหมดเกี่ยวกับการนำเสนอมุมมองของโลกที่ผู้ใช้สามารถใช้ หนึ่ง abstractions ประสบความสำเร็จมากที่สุดคือโปรแกรมแก้ไขข้อความ เมื่อคุณเขียนโปรแกรมและพิมพ์ความคิดเห็นมันยากที่จะจินตนาการว่าข้อมูลนี้ไม่ได้ถูกเก็บไว้เป็นตัวอักษร แน่นอนว่าถ้ามีคนบอกว่า Come on จริงๆคุณไม่คิดว่าตัวละครเหล่านั้นจะถูกบันทึกไว้เป็นตัวอักษรคุณรู้ไหมเกี่ยวกับโค้ด ASCII จากนั้นคุณก็เห็นด้วยอย่างยิ่งว่าไฟล์ ASCIItext จะถูกเก็บเป็น 0s และ 1s จริงๆ แต่มันยากที่จะคิดอย่างนั้น ไฟล์ ASCII จะถูกจัดเก็บเป็น 1s และ 0s จริงๆ แต่มันหมายถึงอะไรที่จะบอกว่าเก็บไว้เป็นไฟล์ขนาด 1 และ 0 จะถูกจัดเก็บไว้ในดิสก์และดิสก์มีวิธีหนึ่งในการแทน 1 และ 0 ได้ เราเพียงเรียกพวกเขา 1s และ 0s เพราะ thats ยัง abstraction ไม่ว่าจะใช้วิธีใดในการจัดเก็บข้อมูล 0s และ 1s ลงบนดิสก์เราก็ไม่ค่อยสนใจเพราะเราสามารถคิดถึงวิธีนี้ได้ มีผลให้ไฟล์ ASCII เป็นไฟล์ไบนารีโดยทั่วไปเนื่องจากเก็บหมายเลขไบนารีไว้ นั่นคือไฟล์ ASCII จัดเก็บข้อมูล 0 วินาทีและ 1 วินาที ความแตกต่างระหว่างไฟล์ ASCII และไฟล์ไบนารีไฟล์ ASCII เป็นไฟล์ไบนารีที่จัดเก็บรหัส ASCII จำได้ว่ารหัส ASCII เป็นรหัส 7 บิตที่เก็บอยู่ในไบต์ มีความเฉพาะเจาะจงมากขึ้นมี 128 รหัส ASCII ที่แตกต่างกันซึ่งหมายความว่าจำเป็นต้องมีเพียง 7 บิตเพื่อแสดงอักขระ ASCII เท่านั้น อย่างไรก็ตามเนื่องจากขนาดที่สามารถทำงานได้ขั้นต่ำคือ 1 ไบต์บิต 7 บิตเหล่านี้จะมีไบต์น้อย 7 บิต บิตที่สำคัญที่สุดคือ 0 ซึ่งหมายความว่าในไฟล์ ASCII ใด ๆ คุณจะเสียเวลา 18 บิต โดยเฉพาะอย่างยิ่งบิตที่สำคัญที่สุดของแต่ละไบต์ไม่ได้ถูกใช้ แม้ว่าไฟล์ ASCII จะเป็นไฟล์ไบนารีบางคนถือว่าไฟล์เหล่านี้เป็นไฟล์ประเภทต่างๆ ฉันชอบที่จะคิดว่าไฟล์ ASCII เป็นไฟล์ไบนารีชนิดพิเศษ ไฟล์บิวท์ไบต์ที่เป็นไบต์ที่เขียนไบต์แต่ละตัวด้วยโค้ด ASCII ไฟล์ไบนารีทั่วไปเต็มรูปแบบไม่มีข้อ จำกัด ดังกล่าว รูปแบบใด ๆ ของรูปแบบ 256 บิตสามารถใช้ในไบต์ใดก็ได้ของไฟล์ไบนารี เราทำงานกับไฟล์ไบนารีตลอดเวลา ไฟล์ปฏิบัติการไฟล์อิมเมจไฟล์เสียงและรูปแบบไฟล์จำนวนมากเป็นไฟล์ไบนารี สิ่งที่ทำให้ไบนารีเป็นเพียงข้อเท็จจริงที่ว่าไบต์ไบต์แต่ละไฟล์สามารถเป็นหนึ่งในรูปแบบ 256 บิต ไม่ จำกัด เฉพาะรหัส ASCII ตัวอย่างไฟล์ ASCII สมมติว่าคุณกำลังแก้ไขไฟล์ข้อความด้วยโปรแกรมแก้ไขข้อความ เนื่องจากคุณใช้โปรแกรมแก้ไขข้อความคุณจึงแก้ไขไฟล์ ASCII ได้ค่อนข้างมาก ในไฟล์ใหม่นี้คุณพิมพ์ cat นั่นคือตัวอักษร c แล้ว a แล้ว t จากนั้นให้คุณบันทึกไฟล์และออก สิ่งที่เกิดขึ้นในขณะนี้เราไม่ต้องกังวลเกี่ยวกับกลไกของการเปิดไฟล์แก้ไขและปิด มีความกังวลเกี่ยวกับการเข้ารหัส ASCII ถ้าคุณค้นหาตาราง ASCII คุณจะพบรหัส ASCII สำหรับ 0x63, 0x61, 0x74 (0x ระบุค่าเป็น hexadecimal แทน decimalbase 10) นี่คือลักษณะที่ปรากฏ: ทุกครั้งที่คุณพิมพ์อักขระ ASCII และบันทึกไว้ไบต์ทั้งตัวจะถูกเขียนขึ้นซึ่งตรงกับตัวอักษรนั้น ซึ่งรวมถึงเครื่องหมายวรรคตอนช่องว่างเป็นต้น ผมจำได้ว่าครั้งหนึ่งนักเรียนใช้เครื่องหมายดอกจัน 100 อันในความคิดเห็นของเขาและเครื่องหมายดอกจันเหล่านี้ปรากฏอยู่ทุกแห่ง เครื่องหมายดอกจันแต่ละอันใช้เวลาหนึ่งไบต์ในไฟล์ เราบันทึกไฟล์นับพันไบต์จากไฟล์โดยลบความคิดเห็นส่วนใหญ่เป็นเครื่องหมายดอกจันซึ่งทำให้ไฟล์ดูดี แต่ไม่ได้เพิ่มความชัดเจน ดังนั้นเมื่อคุณพิมพ์ c จะถูกบันทึกเป็น 0110 0011 ลงในไฟล์ ตอนนี้บางครั้งโปรแกรมแก้ไขข้อความจะพ่นอักขระที่คุณอาจไม่คาดหวัง ตัวอย่างเช่นบรรณาธิการบางคนยืนยันว่าแต่ละบรรทัดมีอักขระ newline สิ่งนี้หมายความว่าฉันเคยถามนักเรียนคนใดว่าเกิดอะไรขึ้นถ้าจุดสิ้นสุดของบรรทัดไม่มีตัวอักษรบรรทัดใหม่ นักเรียนคนนี้คิดว่าไฟล์ถูกบันทึกเป็นสองมิติ (ไม่ว่านักเรียนจะได้รับ ir หรือไม่) เขาไม่ได้รู้ว่ามันถูกบันทึกไว้เป็นอาร์เรย์หนึ่งมิติ เขาไม่ได้ตระหนักว่าอักขระบรรทัดใหม่กำหนดจุดสิ้นสุดของเส้น หากไม่มีอักขระบรรทัดใหม่คุณไม่ได้ไปถึงจุดสิ้นสุดของบรรทัด ที่เดียวที่ไฟล์อาจไม่มีบรรทัดใหม่ในตอนท้ายของบรรทัดเป็นบรรทัดสุดท้าย บรรณาธิการบางคนอนุญาตให้บรรทัดสุดท้ายสิ้นสุดในบางสิ่งบางอย่างนอกเหนือจากอักขระบรรทัดใหม่ ผู้แก้ไขบางคนจะเพิ่มบรรทัดใหม่ในตอนท้ายของไฟล์ทุกไฟล์ น่าเสียดายแม้แต่อักขระบรรทัดใหม่ยังไม่ได้มาตรฐานที่ทั่วถึง โดยทั่วไปจะใช้ตัวอักษรใหม่บนไฟล์ยูนิกซ์ แต่ใน Windows จะใช้อักขระสองตัวต่อกันเพื่อสิ้นสุดแต่ละบรรทัด (การรับคืนสายการบิน newline ซึ่งเป็น r และ n ฉันเชื่อว่า) เหตุใดจึงต้องใช้อักขระสองตัวเมื่อจำเป็นเท่านั้นวันนี้กลับไปที่เครื่องพิมพ์ ในสมัยก่อนเวลาที่เครื่องพิมพ์ใช้เพื่อกลับไปยังจุดเริ่มต้นของบรรทัดเท่ากับเวลาที่ใช้ในการพิมพ์อักขระสองตัว ดังนั้นสองตัวอักษรถูกวางไว้ในไฟล์เพื่อให้เวลาในการพิมพ์ย้ายลูกเครื่องพิมพ์ไปที่จุดเริ่มต้นของบรรทัด ข้อเท็จจริงนี้ไม่ใช่สิ่งที่สำคัญ เรื่องไม่สำคัญส่วนใหญ่ของมัน เหตุผลที่ฉันนำมาขึ้นเป็นเพียงในกรณี youve สงสัยว่าทำไมการถ่ายโอนไฟล์ไปยัง UNIX จาก Windows บางครั้งสร้างตัวตลก การแก้ไขไฟล์ไบนารีตอนนี้คุณรู้ว่าอักขระแต่ละตัวที่พิมพ์ลงในไฟล์ ASCII สอดคล้องกับหนึ่งไบต์ในไฟล์คุณอาจเข้าใจว่าเหตุใดจึงแก้ไขไฟล์ไบนารีได้ยาก ถ้าคุณต้องการแก้ไขไฟล์ไบนารีจริงๆคุณต้องการแก้ไขแต่ละบิต ตัวอย่างเช่นสมมติว่าคุณต้องการเขียนรูปแบบไบนารี 1100 0011 คุณจะทำแบบนี้ได้อย่างไรคุณอาจจะไร้เดียงสาและพิมพ์ข้อมูลต่อไปนี้ในไฟล์: แต่ตอนนี้คุณควรรู้ว่านี่ไม่ใช่การแก้ไขแต่ละบิตของ ไฟล์. ถ้าคุณพิมพ์ใน 1 และ 0 คุณกำลังป้อนจริงๆใน 0x49 และ 0x48 นั่นคือคุณกำลังป้อนใน 0100 1001 และ 0100 1000 ลงในไฟล์ คุณใช้งาน (โดยอ้อม) 8 บิตในแต่ละครั้ง แต่ฉันจะสมมติว่าแก้ไขไฟล์ไบนารีได้อย่างไรคุณร้องไห้บางครั้งฉันเห็นภาวะที่กลืนไม่เข้าคายไม่ออกนี้ นักเรียนถูกสอนให้ปฏิบัติงาน พวกเขาพยายามที่จะทำผลงานและแม้ว่าการแก้ปัญหาของพวกเขาจะไม่มีผลใด ๆ แต่ก็ยังคงทำอยู่ หากถามว่าจะคิดว่าโซลูชันนี้ใช้งานได้จริงหรือไม่พวกเขาอาจจะให้เหตุผลว่าผิด แต่ถามว่าจะแก้ไขไฟล์ไบนารีได้อย่างไรฉันจะแก้ไขแต่ละบิตได้อย่างไรคำตอบคือไม่ง่าย มีบางโปรแกรมที่อนุญาตให้คุณพิมพ์ 49 และแปลเป็นไบต์เดี่ยว 0100 1001 แทนโค้ด ASCII สำหรับ 4 และ 9 คุณสามารถเรียกโปรแกรมแก้ไข hex เหล่านี้ได้ แต่น่าเสียดายที่อาจไม่พร้อมใช้งาน ไม่ยากที่จะเขียนโปรแกรมที่อ่านในไฟล์ ASCII ที่ดูเหมือนว่าเป็นคู่ hex แต่จะแปลงเป็นไฟล์ไบนารีที่แท้จริงด้วยรูปแบบบิตที่สอดคล้องกัน กล่าวคือใช้ไฟล์ที่ดูเหมือนว่า: และแปลงไฟล์ ASCII นี้เป็นไฟล์ไบนารีที่เริ่มต้น 0110 0011 (ซึ่งมีเลขฐานสองเป็น 63) ขอให้สังเกตว่าไฟล์นี้เป็น ASCII ซึ่งหมายถึงอะไรที่เก็บไว้จริงๆคือโค้ด ASCII สำหรับ 6, 3, (space), a, 0 และอื่น ๆ โปรแกรมสามารถอ่านไฟล์ ASCII นี้แล้วสร้างรหัสไบนารีที่เหมาะสมและเขียนไฟล์นั้นลงในไฟล์ ดังนั้นไฟล์ ASCII อาจมี 8 ไบต์ (6 ตัวอักษร 2 ตัวสำหรับช่องว่าง) และไฟล์ไบนารีเอาต์พุตจะมี 3 ไบต์หนึ่งไบต์ต่อคู่ hex การดูไฟล์ไบนารีระบบปฏิบัติการส่วนใหญ่มาพร้อมกับโปรแกรมบางโปรแกรมที่ช่วยให้คุณสามารถดูไฟล์ในรูปแบบไบนารีได้ อย่างไรก็ตามการอ่าน 0s และ 1s อาจเป็นเรื่องที่ยุ่งยากดังนั้นจึงมักแปลเป็น hexadecimal มีโปรแกรมที่เรียกว่า hexdump ซึ่งมาพร้อมกับ Linux distribution หรือ xxd ในขณะที่คนส่วนใหญ่ชอบดูไฟล์ผ่านโปรแกรมแก้ไขข้อความคุณสามารถดูไฟล์ ASCII ได้อย่างสะดวกในลักษณะนี้ บรรณาธิการข้อความส่วนใหญ่จะช่วยให้คุณสามารถดูไฟล์ไบนารี (เช่นไฟล์ปฏิบัติการ) แต่ใส่ในสิ่งต่างๆที่มีลักษณะเป็นตัวควบคุม hexdump ที่ดีจะพยายามแปลคู่ hex เพื่อพิมพ์ ASCII ถ้าสามารถทำได้ นี่เป็นเรื่องที่น่าสนใจเพราะคุณพบว่าในไฟล์ executables หลายไฟล์ยังเขียนด้วย ASCII ดังนั้นนี่เป็นคุณลักษณะที่มีประโยชน์มากที่จะมี การเขียนไฟล์ไบนารีตอน 2 ทำไมคนถึงใช้ไฟล์ไบนารีอยู่ดีเหตุผลหนึ่งก็คือความกระชับ ตัวอย่างเช่นสมมติว่าคุณต้องการเขียนหมายเลข 100000 ถ้าคุณพิมพ์ลงใน ASCII จะใช้เวลา 6 อักขระ (ซึ่งเป็น 6 ไบต์) อย่างไรก็ตามถ้าคุณระบุว่าเป็นไบนารีที่ไม่ได้ลงชื่อคุณสามารถเขียนออกโดยใช้ไบต์ 4 ได้ ASCII สะดวกเนื่องจากมีแนวโน้มที่จะอ่านได้โดยมนุษย์ แต่สามารถใช้พื้นที่ได้มาก คุณสามารถแสดงข้อมูลได้อย่างกระชับมากขึ้นโดยใช้ไฟล์ไบนารี ตัวอย่างเช่นสิ่งหนึ่งที่คุณสามารถทำได้คือการบันทึกวัตถุลงในไฟล์ นี่คือการทำให้เป็นอันดับ เมื่อต้องการถ่ายโอนข้อมูลไปยังไฟล์คุณจะใช้เมธอด write () โดยปกติคุณจะส่งผ่านตัวชี้ไปยังวัตถุและจำนวนไบต์ที่ใช้เพื่อแสดงวัตถุ (ใช้โอเปอเรเตอร์ sizeof เพื่อกำหนดค่านี้) กับเมธอด write () วิธีนี้จะทิ้งไบต์ตามที่ปรากฏในหน่วยความจำลงในไฟล์ จากนั้นคุณสามารถกู้คืนข้อมูลจากไฟล์และวางข้อมูลลงในออบเจ็กต์โดยใช้วิธี read () ที่สอดคล้องกันซึ่งโดยทั่วไปจะใช้ตัวชี้ไปยังวัตถุ (และควรชี้ไปที่อ็อบเจ็กต์ที่มีการจัดสรรหน่วยความจำไม่ว่าจะเป็นแบบสแตติกหรือแบบไดนามิก จัดสรร) และจำนวนไบต์สำหรับวัตถุและคัดลอกไบต์จากไฟล์ลงในอ็อบเจ็กต์ แน่นอนคุณต้องระมัดระวัง ถ้าคุณใช้คอมไพเลอร์ที่แตกต่างกันสองหรือถ่ายโอนไฟล์จากเครื่องหนึ่งไปยังอีกเครื่องกระบวนการนี้อาจไม่ทำงาน โดยเฉพาะอย่างยิ่งวัตถุอาจจะวางแตกต่างกัน นี้อาจเป็นง่ายๆ endianness หรืออาจมีปัญหากับ padding วิธีการบันทึกออบเจ็กต์เหล่านี้ลงในไฟล์เป็นสิ่งที่ดีและเรียบง่าย แต่อาจไม่ใช่สิ่งที่พกพาได้ นอกจากนี้จะเทียบเท่ากับสำเนาตื้น หากวัตถุมีคำแนะนำจะเขียนที่อยู่ไปยังไฟล์ ที่อยู่เหล่านี้อาจเป็นความหมายโดยสิ้นเชิง ที่อยู่อาจทำให้รู้สึกได้ในขณะที่โปรแกรมกำลังทำงาน แต่ถ้าคุณเลิกและรีสตาร์ทที่อยู่เหล่านั้นอาจมีการเปลี่ยนแปลง นี่คือเหตุผลที่บางคนคิดค้นรูปแบบของตนเองสำหรับเก็บวัตถุ: เพื่อเพิ่มความสามารถในการพกพา แต่ถ้าคุณรู้ว่าคุณไม่จัดเก็บวัตถุที่มีคำแนะนำและคุณกำลังอ่านไฟล์อยู่ในระบบคอมพิวเตอร์ประเภทเดียวกันที่คุณเขียนไว้และคุณใช้คอมไพเลอร์เดียวกันควรใช้งานได้ นี่คือเหตุผลหนึ่งที่บางครั้งผู้คนต้องการเขียน ints, chars ฯลฯ แทนวัตถุทั้งหมด พวกเขามีแนวโน้มที่จะค่อนข้างพกพามากขึ้น ไฟล์ ASCII เป็นไฟล์ไบนารีที่ประกอบด้วยอักขระ ASCII อักขระ ASCII มีการเข้ารหัสแบบ 7 บิตที่เก็บไว้ในไบต์ ดังนั้นแต่ละไบต์ของไฟล์ ASCII มีบิตที่สำคัญที่สุดที่ตั้งไว้เป็น 0 คิดว่าไฟล์ ASCII เป็นไฟล์ไบนารีชนิดพิเศษ ไฟล์ไบนารีทั่วไปใช้ทั้ง 8 บิต ไบต์ไฟล์แต่ละไบต์สามารถมีรูปแบบบิตสตริบิว 256 แบบ (เหมือนไฟล์ ASCII ที่มีรูปแบบบิตสตริบิก 128) อาจมีช่วงเวลาที่ไฟล์ข้อความ Unicode กลายเป็นที่แพร่หลายมากขึ้น แต่ตอนนี้ไฟล์ ASCII เป็นรูปแบบมาตรฐานสำหรับไฟล์ข้อความ Ascii Text to Binary Converter หากต้องการใช้ข้อความ ascii นี้กับเครื่องมือแปลงไบนารีให้พิมพ์ค่า ascii เพื่อช่วยในการรับไฟล์ 01101000011001010110110001110000 จากนั้นให้กดปุ่ม Convert นี่เป็นวิธีที่คุณสามารถแปลงข้อความ Ascii 128 เป็นอักขระไบนารีได้ ASCII เป็นระบบการเข้ารหัสที่เรียกว่าย่อมาจาก American Standard Code for Interchange ได้รับการออกแบบมาสำหรับเครื่องคอมพิวเตอร์และเครื่องพิมพ์รุ่นเก่าจากรหัสโทรเลขโดยมีพื้นฐานมาจาก 128 สัญลักษณ์ซึ่งประกอบด้วยตัวเลข 10 ตัวอักษรภาษาอังกฤษ 26 ตัวจำนวนเครื่องหมายวรรคตอน ฯลฯ ระบบแสดงถึงตัวอักษรที่มองเห็นได้หรือคำสั่งสำหรับการพิมพ์เช่น start, สมบูรณ์ ฯลฯ ระบบ ASCII รุ่นล่าสุดมีใช้กันอย่างแพร่หลายในด้านอุปกรณ์โทรคมนาคมและคอมพิวเตอร์ ระบบ Hex Hex หรือเลขฐานสิบหก เป็นระบบจำนวนฐาน 16 ระบบเลขนี้เป็นที่น่าสนใจโดยเฉพาะอย่างยิ่งเพราะในระบบเลขทศนิยมของเราใช้ลวกเรามีเพียง 10 หลักเพื่อแสดงตัวเลข เนื่องจากระบบฐานสิบหกมีเลข 16 หลักจำนวน 6 หลักจะต้องเป็นตัวอักษรตัวแรกของภาษาอังกฤษ ดังนั้นเลขฐานสิบหกคือ 0,1,2,3,4,5,6,7,8 และ 9 A, B, C, D, E, F. ระบบตัวเลขนี้ใช้กันอย่างแพร่หลายในด้านคณิตศาสตร์และเทคโนโลยีสารสนเทศ นั่นคือ ในสีการเขียนโปรแกรม html สามารถแสดงด้วยเลขฐานสิบหก 6 หลัก FFFFFF หมายถึงสีขาว 000000 หมายถึงสีดำและอื่น ๆ ให้ตรวจสอบตารางแปลงไบนารี Ascii เพื่อแปลงข้อความ ascii เป็น binary ตาราง ASCII ต่อไปนี้ประกอบด้วยตัวควบคุม ASCII ทั้งตัวอักษร ASCII ที่พิมพ์ได้และ ชุดอักขระ ASCII แบบขยายที่ ISO 8859-1 หรือที่เรียกว่ารหัส ISO Latin1 ASCII - ตาราง ASCII แบบขยาย ASCII ย่อมาจาก American Standard Code for Interchange ของข้อมูล รหัสอักขระ 7 บิตของมันซึ่งทุกบิตแสดงอักขระที่ไม่ซ้ำกัน บนเว็บเพจนี้คุณจะพบ 8 บิต 256 อักขระตามมาตรฐาน ISO 8859-1 และอักขระที่เพิ่มขึ้นของ Microsoft Windows Latin-1 ซึ่งมีอยู่ในโปรแกรมบางตัวเช่น Microsoft Word อักขระควบคุม ASCII (รหัสอักขระ 0-31) อักขระตัวแรก 32 ตัวในตาราง ASCII เป็นรหัสควบคุมที่ไม่สามารถพิมพ์ได้และใช้เพื่อควบคุมอุปกรณ์ต่อพ่วงต่างๆเช่นเครื่องพิมพ์

No comments:

Post a Comment