我創建了一個用於處理二進制文件的小工具。參與讀取文件並處理它們的模板和所有的功能都與此類似:處理二進制文件 - 模板化函數問題
template <class T> void processFile(const char* fileName);
模板參數T
用於確定將被讀出並作爲一項處理數據的大小。我不知道如何正確地說,所以這是一個小例子(請注意,這些是用hexeditor看到的二進制數據)。文件內容:
BEEF1234DEAD5678
隨着T
是unsigned char時,項目有:BE EF 12 34 DE AD 56 78
隨着T
是unsigned int類型,項目有:BEAF1234 DEAD5678
隨着T
是一個雙:BEAF1234DEAD5678
(請注意,我假設這裏的unsigned char
是1個字節,unsigned int
是4個字節,double
是8個字節大)。T
也用於STL容器,因爲我用它們ot(矢量,地圖和列表用於處理文件所涉及的許多功能)。一切工作完美罰款與內置數據類型(char,int等)。
現在我的問題是什麼:我希望能夠使用不同於1,4,8的尺寸。例如16,32甚至6,10,14等。據我所知,這些尺寸沒有內置類型。我怎樣才能做到這一點?我主要關心的是我需要STL容器中的數據,並使用sort()作爲例子。 POD結構會起作用嗎?請注意,我主要使用C函數進行讀取(這裏沒有流,但有一些memcpy和memcmp,fread等)。
對不起,不提供更多的代碼,我現在使用我的備用筆記本電腦。但我相信更多的代碼不應該是必要的。如果是這樣,我明天會提供。
使用任意精度算術庫? – Gian 2010-07-25 19:03:05
沒有圖書館,依賴性越少越好。有沒有辦法以一種清潔有效的方式來做到這一點,或不是? – PeterK 2010-07-25 19:14:09