2015-04-04 31 views
0

我想用一個指針一次一個字節地移動一個hexdump,直到找到一個特定的字節序列X字節長。爲此,我需要將指針轉換爲X字節的大小。例如,一個大小爲3字節的指針。 我知道我可以簡單地使用像uint16_t,如果我想它是2個字節,或uint32_t,如果我想它是4個字節。但是這些都沒有爲此工作。如何創建一個特定大小的指針,然後讓它指向內存中的特定地址

我必須從指向我有位置的內存塊的開始位置開始,以便一次移動一個字節。我怎樣才能做到這一點而不會失去那個位置?

回答

0

這是不可能的。如果你的系統沒有任何使用3字節存儲的類型,那麼你不能有指向這種類型的指針。相反,您應該使用unsigned char *並從它指向的位置讀取字節,然後對它們執行某些操作。

例如,如果這3個字節是最顯著3個字節int的,在big-endian格式,你可以寫:

unsigned char *ptr = /* find the right location */; 

unsigned int foo = ptr[0] * 0x10000u + ptr[1] * 0x100u + ptr[2]; 
相關問題