2017-03-29 1 views
0

한 번에 한 바이트 (char) 메시지를 읽고 있는데 그 값을 기반으로 변수 값을 설정하고 싶습니다. 바이트를 연결 한 다음 캐스트를 사용하여 값을 설정하는 방법이 있습니까? 같은한 번에 한 바이트 씩 가변 내용을 설정하십시오.

뭔가 : 그 문제가 될 것입니다, 그래서

mytype packet = (mytype) byteconcat; 

내가 rigth 문자열 해요 경우 여분의 바이트를 가지고있다.

또는 변수를 만들고 바이트를받을 때 설정할 수 있습니까?

+0

그것은 모두 당신의 변수 – Jonas

+0

의 유형에 따라 당신은 포인터를 arithmetics와 familir 있습니까? 바이트를 문자열로 복사하여 원하는 유형으로 캐스팅 할 수 있습니다. 이것은 문제가없는 것이 아니지만. Google 프로토콜 버퍼 또는 부스트 :: 시리얼 라이저와 같은 시리얼 라이저를 사용하는 것이 좋습니다. –

+0

네가 할 수있는 일은, 만약 포인터로 약간의 만만치 않으면 문제가되지 않을 것이다. Coz void 포인터는 무엇이든 캐스트 될 수 있습니다. 여기에 대한 좋은 블로그 포스트가 있습니다. http://www.thegeekstuff.com/2014/06/cpp-convert-datatypes/ –

답변

1

당신은 그것을 위해 공용체를 사용할 수 있습니다.

정수를 인터넷을 통해 보내고 다른 쪽에서 정수를 1 바이트 씩 잡아 당깁니다.

union Data { 
    unsigned char bytes[4]; 
    int val; 
} 

과 같은 코드 :

노동 조합은 다음과 같이 할 수

bool read(Data& outBuff, int& offset, unsigned char receivedByte) 
{ 
    outBuff.bytes[offset++]= receivedByte; 

    bool readyToRead = offset >= 4; 
    if(readyToRead) {offset=0;} 

    return readyToRead; 
} 
관련 문제