2012-11-28 76 views
0

起初,我對我的英語:) 對不起所以,我有一個結構和可變C++中,reinterpret_cast的結構*爲unsigned char *

typedef struct 
{ 
    GHEADER m_Header; 
    BYTE *m_Buf; 
    Addr *m_Abonent; 
}__attribute__((packed)) PACKET; 

unsigned char* uc_ptr; 

我需要發送一些功能無符號的字符指針參數。我嘗試使用reinterpret_cast來將PACKET類型的指針投射到unsigned char*

PACKET* t_PACKET; 
uc_ptr = reinterpret_cast<unsigned char*>(t_PACKET); 

但後來我嘗試

std::cout << *uc_ptr << std::endl; 

我什麼也沒看到。爲什麼?以及如何正確投射?

+3

因爲這很可能沒有多大意義。這應該使用別的東西解決,鑄造不是爲了這個目的。 – 2012-11-28 20:24:00

+1

你期待看到什麼? – Pubby

回答

3

當您使用<<來輸出char時,您將得到一個寫入輸出的單個字符。許多字符,如\0不顯示在控制檯上。

試試這個,看看我的意思是:

std::cout << static_cast<unsigned int>(*uc_ptr) << std::endl; 

你需要一個循環來獲取所有字節的結構。

+0

我得到0.這是什麼意思? – user1861137

+1

@ user1861137,這意味着您的結構的第一個字節爲零,正如我懷疑的那樣。這是一個'NUL'字符,不會顯示在控制檯上。如果你能更清楚地知道你想要完成什麼,我可能會有更多的幫助。 –

+0

如何獲得結構中的所有字節?可能是這樣的: while(i user1861137

相關問題