나는 tftp 클라이언트를 쓰고있다. 하지만 다음과 같이 블록 번호를 변환하면 :소켓 프로그래밍을위한 uint16_t에 Covert char [2]?
uint16_t blockN = buffer [2] < < 8 | 버퍼 [3];
127 이후 65408이 blockN으로 표시됩니다. 여기에 무슨 문제가 있을까요?
답장을 보내 주셔서 감사합니다.
나는 tftp 클라이언트를 쓰고있다. 하지만 다음과 같이 블록 번호를 변환하면 :소켓 프로그래밍을위한 uint16_t에 Covert char [2]?
uint16_t blockN = buffer [2] < < 8 | 버퍼 [3];
127 이후 65408이 blockN으로 표시됩니다. 여기에 무슨 문제가 있을까요?
답장을 보내 주셔서 감사합니다.
나는 uint16_t 블록을 수행하여 해결했습니다. N = 버퍼 [2] < < 8 | (버퍼 [3] & 0xFF);
당신은 그렇지 buffer[2]
이 int
로 승격됩니다 unsigned char
의 배열에 char
의 배열에서 buffer
배열의 형태를 변경하고 확장 발생에 서명해야합니다. 대부분의 플랫폼에서 char
유형은 서명 된 유형입니다.
좋아,하지만 이런 식으로 exaclty하지만 해결이 아이디어가 도움이되었습니다. 내가 했어 uint16_t blockN = 버퍼 [2] << 8 | 버퍼 [3] &0xFF; 그래서 난 서명 연장 없애있어 – ahmetsarias
정말로 인쇄 하시겠습니까? – MightyPork
나는 연산자 우선 순위 테이블을 기억하지 못하지만,'(buffer [2] << 8) | (버퍼 [3]); ' –
예. – ahmetsarias