簡體   English   中英

使用哪個小部件將硬盤扇區顯示為十六進制?

[英]which widget to use to show hard disk sectors as hexadecimal?

我想了解諸如winHex這樣的實用程序,它們是磁盤編輯器。 它們訪問硬盤並用大約2TB的整個硬盤的十六進制表示數據。 他們如何在單個滾動區域中實現此目標並在其中提供撤消功能。...應該使用哪個小部件來顯示如此大量的數據。 我想在QT中進行此應用。

他們如何在單個滾動區域中實現這一目標

它不是包含整個磁盤的“單個滾動區域”。 它是一個滾動條,它針對您當時顯示的任何磁盤內容動態生成內容。

只需根據滾動位置計算位置即可(除非您的屏幕高10000像素,但是,您將無法完全將光標放置在所需的磁盤扇區上)。

還提供了撤消功能。

我希望撤銷功能(我沒有看過代碼)是通過在某種容器中保存“地址更改,舊值”來完成的。 幾乎與您要撤消任何其他大型數據集信息的方式相同。

應該使用哪個小部件來顯示如此大量的數據。

一個顯示文本並允許您攔截重繪並在每個重繪操作中提供您自己的數據的工具。 恐怕我不太了解QT,因此無法提供詳細建議。

顯然,您沒有涉及的一個因素是“如何在已裝入磁盤的情況下以讀寫模式打開/裝入整個磁盤”-我不確定是否允許這樣做,但是如果允許,我希望在那里是涉及的磁盤過濾器驅動程序,具有“橫向”接口,以允許在文件系統幕后進行更新。

編輯:在評論中回答問題:

有兩種選擇,一種是在數據更改時寫入磁盤。 在這種情況下,代碼需要記住所有原始值,並在用戶執行undo操作時將其undo 大約相同的工作方式是存儲所有編輯(“將值更改為1000到05”),然后當要求顯示某些內容時,在實際顯示操作之前處理顯示范圍內的所有編輯。

顯然,如果有人決定玩很多小時(數周,數月)的“鍵盤上的猴子”,以使ENTIRE磁盤上充滿相當隨機的內容,那么在不耗盡內存的情況下“記住”所有內容將是一個問題,因此您可能需要一個“我已經用完了存儲撤銷信息的內存,您想保存到目前為止所做的一切嗎?” 類型選項。

也可以考慮使用“大段存儲相同的值”類型的壓縮(例如,如果“從A到B填充值X”,則簡單地存儲“從A到B填充X”,而是可能會存儲許多兆字節的“ A = X,A + 1 = X,A + 2 = X ... B-1 = X,B = X”)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM