[問題] 有人會jpeg變動長度decode嗎?

看板C_and_CPP (C/C++)作者 (機機勳)時間15年前 (2011/06/25 14:37), 編輯推噓2(2017)
留言19則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) DEV C++ 我的問題是jpeg decoder裡面最重要的部份,變動長度解碼這邊,我不知道怎麼寫 我用fread一次讀一個unsigned char,然後再轉成相對應的八個位元 ex: 讀到了f7,先轉成11110111 然後開始做huffman decode 假如這裡是用檔案裡提供的dc table,我先解前面11110,得到7 所以要讀接下來的7個bit,可是我用fread讀出來的這個byte裡面只剩下111三個 所以剩下四個bit勢必要到下一個byte去找,所以我要再用fread去讀 ,可是一想到就覺得很複雜,要設一大堆參數表示目前的位置,或是還要讀幾個 ,或是這個byte跟上一個byte之間的關係,或是還要設什麼buffer之類的 我想很久都想不到,不知道怎麼辦...? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.107.44

06/25 14:38, , 1F
一般來說, 先開個跟檔案一樣大的mem然後一次讀檔全讀回
06/25 14:38, 1F

06/25 14:39, , 2F
來, 跟著就像在從array裡一個一個拿了不是嗎??
06/25 14:39, 2F

06/25 14:44, , 3F
的確,我當初沒考慮這個方法,因為講義上看起來要我一次
06/25 14:44, 3F

06/25 14:44, , 4F
讀一個byte來分析,請問正常來說都是一次讀全部嗎?
06/25 14:44, 4F

06/25 14:45, , 5F
一次一個byte呀 這只是<<跟|的組合運算而以
06/25 14:45, 5F

06/25 14:46, , 6F
剩下的三個bit 左移八個bit 再對下一個char做|
06/25 14:46, 6F

06/25 14:51, , 7F
請問<<和|是指什麼呢?
06/25 14:51, 7F

06/25 14:57, , 8F
就是位移跟or運算 還是不懂的話就借本書或是上網查資料
06/25 14:57, 8F

06/25 15:02, , 9F
bitwise operator
06/25 15:02, 9F

06/25 15:07, , 10F
(雖然學期結束了) 給你一個提示好了
06/25 15:07, 10F

06/25 15:07, , 11F
回想一下我們的程式作業一為什麼只要你寫這個部份
06/25 15:07, 11F

06/25 15:08, , 12F
你要用什麼樣的型式去完成作業一所要你做的內容
06/25 15:08, 12F

06/25 15:09, , 13F
特別是要怎麼讀入輸入位元
06/25 15:09, 13F

06/25 15:09, , 14F
然後試著把它套用到從檔案裡讀 bit 出來
06/25 15:09, 14F

06/25 15:10, , 15F
這樣你會更容易了解你這部份的程式該怎麼整合進其他部份
06/25 15:10, 15F

06/25 15:13, , 16F
其實可以搭配fseek把檔案陣列化...
06/25 15:13, 16F

06/25 16:43, , 17F
感謝各位 我希望能在三天內盡力做
06/25 16:43, 17F

06/25 16:44, , 18F
我基礎很差,只希望能做到接近完成就好,應該能及格吧
06/25 16:44, 18F

06/26 15:09, , 19F
done!
06/26 15:09, 19F
文章代碼(AID): #1E1O8u6Q (C_and_CPP)
文章代碼(AID): #1E1O8u6Q (C_and_CPP)