兩種檔案大不同
2018-12-14
當你想寫好一個文件,用 .doc 檔 及 .txt檔 有何分別? 驟看之下,最大分別就是 .doc檔 要用Microsoft Word開, .txt檔 只要一個簡單Notepad就可以。實情是 .doc檔 跟 .txt檔 分別代表兩種截然不同的檔案,如果你用一個純文字編輯 器打開他們,分別就顯而易見了。
右邊是.doc檔 只有一句 I am a word file ,卻顯示了許多紅色的怪符號,左邊的.txt檔只顯示了一句簡單的文字,為何同樣是顯示一句文字,有 如此大的分別? 原因是
.doc 檔是一個二進位檔案(binary file) ,而 .txt檔是一個純文字檔案(plain-text file)。
這就奇怪了,對電腦而言,不是所有文字都是二進位嗎?實情沒有那麼簡單。
純文字檔
純文字檔,通常是跟編程(programming)、組態(configuration)有關,之所以是純文字,正是因為要方便人閱讀及更改,編程中常出現的 .html檔、.js檔,都是方便工程師隨時閱讀,亦方便以不同的純文字編輯器開啟,無須如.doc檔一樣必須由一類軟件開啟。
純文字檔旳原理是將文字以編碼例如UTF-8表示,在以前文章中所提到的Emoji亦是以UTF-8表示,由於UTF-8本身各處通用,能放諸四海皆準,因此使 用不同的文字編輯器亦能正常開啟。由於純文字檔方便分享,很多開源軟件亦會盡量多用純文字檔,以方便在Git 一類的版本控制軟件中使用。
二進位檔
二進位檔,則跟平時常用的軟件有很大關係,如上文提到的 .doc、excel病中的主角 .excel 、最常用的 .ppt ,你用純文字編輯器打開 的話,都是一大堆二進位檔。平面設計師常用的 .psd、.ai 等等,都是二進位制。二進位檔要用專用的編碼讀取,例如.doc 的編碼,在微軟 的網站上,有一份長達五百多頁的完整文件,解釋到底 .doc 的二進位編碼是如何讀取。
比較
既然純文字檔有容易分享、讀取、寫入的特性,為何二進位檔依然大行其道?一個檔案之所以是二進位,大多是因為以下三個原因:
- 所儲存數據本身是二進位模式,例如儲存圖片,點陣圖(Bitmap graphic)又名柵格圖(Raster graphic),以RGB碼來代表每一個像素的顏色,例如 (60,101,168),代表的是一個類近於海軍藍的顏色。因此,要儲存一幅圖,就是儲存了幾百萬個像素,每一個像素都是一個小於255的數字,最適合的自然是用二進位儲存。在 .psd , .ai 的情況,都是基於這個原因。
- 所儲存的數據需要壓縮以縮小檔案大小,微軟新格式的.docx檔其實是一個特殊的壓縮檔,將其中所有內容(包括巨集,加在文件中的圖片),通通加到該壓縮檔中,因此可以減少佔用空間。 .docx、.pptx、xlsx的二進位制式都是因為這個原因。Mac的 .numbers 檔都是基於同一個原理。
- 該檔案是執行檔,因為電腦中央處理器只能讀取二進位碼,因此任何執行檔,例如Windows的exe檔,都是二進位的。
通常有足夠大小的二進位檔的大小都比純文字檔要小,舉一簡單例子,要表達數字65535,在純文字檔案,須要五個子元(character),以每個字元要一個位元組(byte) 來表達,起碼要五個位元組。但要如果用數字表達65535,只需要兩個位元組。儲存效率上差了足足一倍。亦是因此通常圖案很難再壓縮,因為儲存效率已相 當高。
常用二進位檔案的替代
讀到這裏,你可能會想,既然有不少軟件都支援二進位檔,如果我不是以編程為生,就不須要寫純文字檔了。恰恰相反,有 些純文字的做法卻是可以改善工作效率的利器。
以.doc為例,大家自用電腦以來都已經使用多年,其實在.doc以外,還有許多純文字的格式化文本(formatted Text)任君選擇。 例如 RTF 檔、Markdown檔等,都方便大家書寫,加上不同格式。 我尤其推薦Markdown檔,大家平常見到我的文章,大多都是先在Markdown檔寫好,再發佈的。
Markdown檔的參考文件 https://commonmark.org/help/
Rich Text Format的參考文件 https://www.microsoft.com/en-us/download/details.aspx?id=10725
留言
閱讀更多
Emoji是圖還是字?Emoji到底如何運作?
2018-12-04
平日大家使用即時通訊軟件時,少不免加入很多表情符號,同樣一句說話,有否表情符號意思上有不少分別。當大家在選擇表情符號去表達心情,有想過 表情符號到底是甚麼?是圖?是字?曾經使用Android 及 iOS的用家,應該發現兩者的表情符號有些許分別。到底原因為何呢?
有一種病叫Excel病
2018-12-14
有一種有相當歷史的軟件,簡單易學,能滿足大多數人對電腦運算能力、資料處理的需要,除了最初設計用途,被濫用在很多不同用途上, 聰明如你,應該知道我想講的就是試算表(Spreadsheet),其中最多人用的當然就是Microsoft Excel。
寫Blog與寫Code
2019-01-07
在外國,程式設計師在課餘時間寫Blog是很平常的一回事,大家在找尋技術問題的解決方法時,除了全知的Stack Overflow之外, 很多時候閱讀的就是一些其他高手所撰寫的技術文章,博客平台如Medium等也應運而生。相較之下,香港甚少有聽聞程式設計師有寫博客的習慣,大概是由於 工作繁忙,抽身不暇。筆者此前也只是曾經在一些Facebook專頁寫過一些技術文,現在才算上是恆常出文。短短數月中,已感受到為何外國程式設計師如此樂 此不疲,即使要抽出私人時間,也會寫Blog出文。
Web Technology為何征服世界?
2019-02-05
2007年,蘋果宣佈發佈第一代iPhone,標誌智能電話時代的開始;一年之後Android亦宣告面世,從此時起,智能電話的發展迅速,Mobile App成為軟件的代 名詞,筆者初初成為軟件工程師時,總有朋友詢問我是否正在開發Mobile App,縱使筆者的專業一直都是網頁及後端開發之上。而其時亦有不少預測,預測[網站將會被Mobile App完全取代](https://searchenginewatch.com/sew/opinion/2414336/the-final-hurdle-is-cleared-apps-will-replace-websites)。網站所用的HTML、CSS、JS等,亦將成為歷史,送入博物館之內。