2012-11-28 58 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

相关问题