Homework 1 - QRcode Decoder
課程名稱:線性代數 CS233 B
授課教師:簡廷因
發放時間:2020-10-05
截止時間:2020-10-26 23:59:59
Get a filename F1 from parameter, and using STDOUT for output
Sample input : case1.bmp
Sample output : This is the testing sentence and will convert into a QR-code like photo.
Sample command : ./tinin.exe case1.bmp
題目說明
給一個 bmp 檔案,由下而上,由左至右,每 8 個像素點代表一組二進位數字 ( 白為 0、黑為 1 ),表示為 Ascii Code,求解碼後的字串。
解題思路
bmp 檔案其實就是以二進制檔案來表示圖片的儲存格式,以本次作業的測資來說,前 54 個 byte 為 bmp 的 header,紀錄一些圖片的基本訊息,如:長度、寬度 … 等等。接著就是像素點的訊息,3 個 byte 一組,分別代表一個像素點的 B、G、R,並且由圖片的下而上,左至右。由於題目只需要後面關於像素點的資料,所以使用 seekg()
跳過前面的 54 個 byte,之後使用 while()
及 get()
讀檔,同時做二進位的轉換,直到檔案的最後即可。需要注意的是當讀了 8 個像素點後,字元若為無法顯示的字元,代表句子已經結尾了,同時表示這張圖片已經處理完了。
參考解法
1 |
|
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Larry's notes!
評論