קובץ בינארי

קובץ בינארי הוא כינוי לקובץ מחשב הכולל מידע המיועד לעיבוד ממוחשב (machine-readable), כגון תווי בקרה, metadata וקוד מכונה, ואיננו מיועד להצגה ולעריכה כטקסט פשוט. כך לדוגמה, יצוג של תמונה, סרט וידאו, או שמע במחשב הוא באמצעות קובץ בינארי. הפיקסלים שבתמונה כמו גם הצלילים, מיוצגים באמצעות נתונים אך לנתונים אין משמעות כטקסט. הניגוד "בינארי" לעומת "טקסט פשוט" משקף את ההתייחסות לסוג הקובץ מנקודת מבטו של המשתמש, ולא לייצוג המידע במחשב בפועל; לאמיתו של דבר, כל פיסת מידע - וממילא כל קובץ - מיוצגים במחשב הדיגיטלי בצורה בינארית. קבצים רבים המכילים מידע בינארי מכילים גם טקסט. קובץ המכיל רק טקסט, מכונה קובץ טקסט, או "קובץ טקסט פשוט". כאשר במחשב מדגם מסוים נהוגה שיטת קידוד מסוימת, כגון ASCII או EBCDIC, קובץ טקסט יכיל רק את התווים הניתנים להדפסה של שיטת קידוד זו, ואילו קובץ בינארי יכיל את כל התווים האפשריים (בהתאם לגודל תו בשיטה). למעשה, חלק מהנתונים בקובץ אינם תווים, אלא מספרים (בנקודה קבועה או נקודה צפה) פקודות מכונה ועוד. הפירוש של קובץ בינארי הוא בידי הקורא (אדם או תוכנית מחשב), על-פי מידע שיש לו על מבנה הקובץ. קובץ בינארי נחשב בדרך כלל כמורכב מרצף של בתים, כלומר ספרות בינאריות המאורגנות בקבוצות של שמונה. קובץ בינארי טיפוסי מכיל בתים המיועדים להתפרש שלא כתו טקסט פשוט. קובצי תוכנה שעברו הידור, הם דוגמה מצויה לקובץ בינארי, אך לקבצים כאלו מקובל לקרוא "בינאריים" (Binaries), בעיקר בקרב מתכנתים או באתרי הורדות, כדי להבדיל בין הקובץ המהודר לקובץ קוד מקור. דוגמאות נוספות לקבצים בינאריים: תמונות, מוזיקה, קבצים דחוסים, או למעשה כל סוג קובץ המכיל יותר מאשר רק טקסט פשוט. קבצים בינאריים מסוימים מכילים "כותרת", קטעים של metadata, המשמשים תוכנות מחשב לפירוש המידע שבקובץ. לדוגמה, קובץ GIF יכול להכיל מספר תמונות, והכותרת משמשת כדי לזהות ולהגדיר כל מקטע תמונה. קובץ בינארי שאינו מכיל כל "כותרת", מכונה גם "קובץ בינארי שטוח". כדי לאפשר מעבר קבצים בינאריים דרך מערכות (כגון דואר אלקטרוני) שמאפשרות מעבר של תווים מסוימים בלבד, בדרך כלל ממירים את הקובץ לייצוג בטקסט פשוט, תוך שימוש בקידוד מתאים (כגון Base64). החיסרון בקידוד כזה הוא הגדלת נפח הקובץ ב-30% בממוצע במהלך ההמרה, וכן הצורך בפיענוח בצד המקבל על ידי המרה חוזרת מייצוג הטקסט לקובץ בינארי. Microsoft Windows מאפשרת להוסיף פרמטר בקריאות מערכת שיציין האם הקובץ בינארי או טקסטואלי. ב־Unix אין אפשרות כזו והמערכת תתייחס לכל קובץ כקובץ בינארי. הדבר משקף את העובדה שהחלוקה בין קבצים בינאריים לטקסטואליים היא די מלאכותית, ומתייחסת בעיקר ליכולת קריאת הקובץ בקלות על ידי אדם (Human readable) אך מבחינת המחשב אין הבדל בין קובץ לקובץ. בחלק מגרסאות יוניקס ומערכות הפעלה דומות לטיפול בקבצים ניאריים קיימת פקודה nm. כשמציגים קובץ בינארי בעזרת עורך טקסט רגיל, כל שמונה סיביות מפורשות כתו טקסט (במצב רגיל), והתוצאה תהיה טקסט חסר משמעות, בדרך כלל. כשפותחים קובץ בינארי על ידי תוכנה אחרת, ייתכנו תוצאות אחרות, למשל, תוכנה אחת תפרש את תוכן הקובץ כמספרים מ-0 עד 255 (טווח המספרים האפשרי בעזרת 8 סיביות) ותציג על המסך טור של מספרים לפי תוכן הקובץ. תוכנה אחרת תפרש את הקובץ כמכיל קודים לייצוג צבעים, ותציג על המסך תמונה המורכבת מצבעים לפי תוכן הקובץ. אם מערכת ההפעלה יכולה להתייחס לקובץ כקובץ הרצה, היא תנסה לפרש את תוכן הקובץ כסדרה של הוראות בשפת מכונה או בשפה אחרת בה היא תומכת (כגון קובץ אצווה או Java). דוגמאות אלה מראות שאין לרצף הבינארי משמעות בפני עצמו, אלא כל תוכנה (או מערכת הפעלה) יכולה לפרש את התוכן בצורה אחרת. כדי להציג ולערוך בצורה נוחה קבצים בינאריים במעין עורך טקסט, ללא שימוש בתוכנה הייעודית לתוכן הקובץ, קיימים עורכים מסוג המכונה "עורך-הקסה" (Hex editor) או "עורך בינארי", שמציגים את הערכים המספריים של תוכן הקובץ, במקום לנסות ולתרגם את התוכן לטקסט כפי שעושים עורכי טקסט רגילים. לעורכים רבים מסוג זה יש אפשרות להציג במקביל מספר ייצוגים של תוכן הקובץ, כשהייצוגים המקובלים הם: בסיס הקסדצימלי (Hex), בסיס עשרוני, בסיס בינארי וייצוג ASCII, שלמעשה מציג את התוכן כפי שעורך טקסט פשוט היה מפרש אותו לטקסט. בדרך כלל, משנים את תוכן הקובץ בעורכים אלו על ידי שינוי הערכים ההקסדצימליים המוצגים. קובץ הרצה קובץ תמונה