2012-11-28 2 views
0

에 reinterpret_cast 구조 * 그래서, 나는 몇 가지 기능 서명 숯불 포인터 인수에 보낼 필요가C++, 서명 숯불 *

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

이것은 아마도별로 의미가 없기 때문입니다. 이것은 다른 것을 사용하여 해결되어야하며 캐스팅은이 목적을위한 것이 아닙니다. –

+1

당신은 무엇을 기대합니까? – Pubby

답변

3

<<을 사용하여 char을 출력하면 출력에 단일 문자가 기록됩니다. \0과 같은 많은 문자가 콘솔에 나타나지 않습니다.

내가 무엇을 의미하는지에 관해 알기 위해 대신보십시오 :

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

당신은 구조에서 모든 바이트를 얻기 위해 루프를해야합니다.

+0

나는 0을 얻는다. 그것은 무엇을 의미 하는가? .. – user1861137

+1

@ user1861137, 그것은 내가 의심하는 것처럼 구조의 첫 번째 바이트가 0이라는 것을 의미한다. 콘솔에 표시되지 않는 'NUL'문자입니다. 당신이 성취하고자하는 것에 대해 더 분명하게 말할 수 있다면 나는 더 많은 것을 도울 수있을 것입니다. –

+0

구조체의 모든 바이트를 가져 오는 방법은 무엇입니까? 이 같은 것일 수도 있습니다. while (i (* uc_ptr) << std :: endl; \t \t ++ i; \t} 하지만 작동하지 않습니다. 0 – user1861137