JavaRush /จาวาบล็อก /Random-TH /ไบต์ เรากำลังอ่านอะไรจากไฟล์?
Roman
ระดับ

ไบต์ เรากำลังอ่านอะไรจากไฟล์?

เผยแพร่ในกลุ่ม
โดยทั่วไปนี่เป็นข้อมูลสำหรับผู้เริ่มต้น เมื่อหัวข้อการอ่านข้อมูลจากไฟล์ปรากฏขึ้นคำถามก็เกิดขึ้น: หากไฟล์มีตัวอักษรแล้วเหตุใดเราจึงอ่านตัวเลขจากไฟล์ในรูปแบบไบต์และไบต์ในกรณีนี้คืออะไร? ไบต์อะไรที่ถูกเขียนไว้ค่อนข้างดีที่นี่. แต่หลังจากอ่านแล้ว คำถามเกี่ยวกับกลไกในการแปลงตัวอักษรเป็นตัวเลขยังคงอยู่ ดังนั้นฉันจึงต้องเจาะลึกลงไปอีกเล็กน้อยบนอินเทอร์เน็ต ดังนั้นสิ่งที่เขียนด้านล่างนี้จึงถือเป็นการเพิ่มเติมได้ คอมพิวเตอร์จัดเก็บแต่ละไฟล์เป็นข้อมูลที่ประกอบด้วยศูนย์และไฟล์ในรูปแบบไบนารี จริงๆ แล้วแต่ละไฟล์คือชุดของไบต์ที่ต่อกัน โดยทั่วไปแล้ว ไฟล์ข้อมูลจะมีสองประเภท: ไฟล์ข้อความและไฟล์ไบนารี ไฟล์ข้อความประกอบด้วยชุดอักขระที่มนุษย์สามารถอ่านได้ทั่วไป ซึ่งเราสามารถเปิดในโปรแกรมแก้ไขข้อความใดก็ได้ ไฟล์ไบนารีประกอบด้วยอักขระที่เราไม่คุ้นเคยในการใช้งานในชีวิตประจำวันดังนั้นจึงจำเป็นต้องมีโปรแกรมพิเศษที่สามารถอ่านได้ ไฟล์ข้อความประกอบด้วยตัวอักษร ตัวเลข และอักขระทั่วไปอื่นๆ ไฟล์ดังกล่าวมีนามสกุล .txt, .py, .csv เป็นต้น เมื่อเราเปิดไฟล์ดังกล่าว เราจะเห็นชุดอักขระปกติที่ประกอบเป็นคำ แม้ว่าในความเป็นจริงแล้วเนื้อหานี้จะไม่ได้จัดเก็บไว้ในแบบฟอร์มนี้ภายในคอมพิวเตอร์ มันถูกจัดเก็บในรูปแบบของบิตนั่นคือ 0 หรือ 1 ในตารางการเข้ารหัสต่างๆ ASCII, UNICODE หรือค่าอื่น ๆ ของอักขระแต่ละตัวถูกกำหนดในรูปแบบไบนารี ดังนั้น หากไบต์สามารถเก็บอักขระได้ 256 ตัว อักขระแต่ละตัวจะมีการเข้ารหัสเลขศูนย์และตัวไบนารีของตัวเอง (เลขศูนย์ที่เขียนติดต่อกันแปดตัวหรือตัวหนึ่งจะมีอักขระหนึ่งตัว) ดังนั้น เมื่อเปิดไฟล์ โปรแกรมแก้ไขข้อความจะแปลค่า ASCII แต่ละค่าให้เป็นอักขระที่คุ้นเคยและแสดงในรูปแบบปกติ ตัวอย่างเช่น ที่หมายเลข 65 ในรูปแบบไบนารี่ของรหัส ASCII คือ 1000001 ซึ่งจะแสดงในไฟล์ด้วยอักษรละติน (ไม่ใช่อักษรซีริลลิก ตัวอักษรซีริลลิกเริ่มต้นจากตำแหน่ง 192) ตัวอักษร “A” นั่นคือในระบบ ASCII ไบต์ที่มีค่า 1000001 สอดคล้องกับค่าของตัวอักษรละติน "A" แต่ละบรรทัดของไฟล์จะมีตัวแบ่งบรรทัดของตัวเอง - EOL (End of Line) บ่อยครั้งที่อักขระนี้ (อักขระสองตัว) คือ "\n" (ค่าไบนารีใน ASCII: 00001010) เมื่ออ่านอักขระดังกล่าวแล้วโปรแกรมจะตีความว่าเป็นจุดสิ้นสุดของบรรทัดและเปลี่ยนเป็นบรรทัดด้านล่าง มี "สัญลักษณ์การทำงาน" อื่นที่คล้ายคลึงกัน ไฟล์ไบนารี่ เช่นเดียวกับไฟล์ข้อความ จะถูกจัดเก็บในรูปแบบไบนารี่ แต่จะไม่ได้ "แนบ" กับโปรแกรมที่ถอดรหัส กล่าวคือ ไม่มีตารางถอดรหัสประเภท ASCII โดยพื้นฐานแล้ว เนื้อหาของไฟล์ดังกล่าวได้แก่ รูปภาพ เสียง และวิดีโอ ซึ่งจะเป็นเวอร์ชันบีบอัดของไฟล์อื่นๆ เช่น ไฟล์ที่ดำเนินการเอง (.exe) ไฟล์ดังกล่าว (ไบนารี่) ไม่สามารถอ่านได้โดยมนุษย์ในแง่ปกติ ดังนั้นความพยายามที่จะเปิดไฟล์เหล่านี้ด้วยโปรแกรมแก้ไขข้อความทั่วไปจะแสดงขยะที่เข้าใจยากจำนวนมาก ดังนั้นจึงมีการสร้างโปรแกรมพิเศษเพื่ออ่านไฟล์ดังกล่าวอย่างถูกต้อง ไฟล์ไบนารี่จะถูกจัดเก็บเป็นชุดไบต์ด้วย แต่ในกรณีนี้ การเปลี่ยนแปลงแม้แต่บิตเดียวอาจทำให้ทั้งไฟล์ไม่สามารถอ่านได้ สามารถดูตารางอักขระ ASCII ได้ที่นี่. ดังนั้น เมื่อเราอ่านไฟล์ อักขระ 8 ตัว (หนึ่งหรือศูนย์) จะถูกอ่านในตัวแปรไบต์ ซึ่งบางโปรแกรมเช่น Notepad ก็สามารถแปลงเป็นอักขระที่อ่านได้ แหล่งที่มาที่ช่วยให้ฉันคิดออก
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION