python 之一次低階錯誤的推導

2021-09-01 22:26:15 字數 830 閱讀 4108

md5演算法是採用分塊計算每個塊生成str1,然後再計算str1的md5的方式。又懷疑是用了stringio導致讀取檔案時讀取的快取不對,所以將stingio去掉換成變數賦值的方式,現象依舊。

沒辦法只好將第一次計算md5的字串和第二次計算md5的字串分別列印出來比對,發現只有最後一塊計算出來的md5值不正確,前兩塊計算出的md5值正確。那麼說明演算法沒有問題,是最後乙個塊讀取出的資料的問題。

怎麼確定最後的資料**不一致呢?一開始以為是讀的時候沒有正確的發現eof標誌,所以又加日誌,在計算最後一塊資料的md5時,輸出當前計算的資料到檔案。比對情況如下圖

發現最後一塊資料的最後幾百個位元組沒有讀出來,這三個出錯檔案均是這種情況。不解,所以又在讀取完每一塊的時候輸出當前的游標值。

真相只有乙個!

總結:警惕這種低階錯誤,警惕乙個指令碼寫乙個禮拜,中間斷斷續續的結果就是你以為你寫進去了,但實際你沒有寫進去,犯了唯物主義錯誤。

Initrd is too big 的一次錯誤嘗試

luo weifeng 2011 5 2 昨天編譯完核心開始製作initrd,由於在編譯的時候選擇了除錯資訊,所以肯定編譯出來的東東就超級的大,是 讓做核心除錯搞的,所以也沒有辦法,網路上關於這個too big的問題一般都是 disable memory hole,但是我在vmware bios裡邊...

一次String的錯誤使用

今日,在寫 的過程中,程式執行乙個方法居然出現了heap space溢位的異常。從來還沒有遇到這樣的異常,打斷點發現是做字串拼接時出現此異常。所以知道了是string使用的異常,因為我做的操作是要大量的拼接字串,次數很多。每次string拼接一次之後,都相當於是重新new了乙個string,然後拼接...

一次傻乎乎的錯誤QAQ

東北聯賽上有一道題,資料範圍是2 60,當時不記得long long的範圍,於是寫了乙個程式試了一下,把隊友帶入了乙個大數的大坑qaq 蠢哭 當時寫的 是這樣的 1 include2 3using namespace std 45 intmain 6 程式輸出0。於是我就把隊友帶入了大數的大坑一去不...