ofstream dest ("test.txt", ios :: binary);어떻게 이진 데이터를 이진 데이터로 나누는가
while (true){
size_t retval = recv (sd, buffer, sizeof(buffer), 0);
dest.write(buffer,retval);
if(retval <= 0) { delete[] buffer; break;}
}
이제 recv()
함수는 각 루프에서 4 바이트를 올바르게 반환합니까? 및 버퍼가 포함되어 있으므로 모든 데이터를 의사 헤더 및 이진 데이터 (이미지)를 반환하지만 이진 데이터 만 캡처하는 방법을 알고 싶습니다. 머리글의 끝이 "\ n \ r"맞는지 알고 싶습니까? 그러나 이것을 만드는 데있어서 해결책은 무엇입니까? "\ n \ r"이 언제인지를 감지하는 함수를 만듭니다. 어떻게 이진 데이터를 캡처 한 후에? 아니면, 모든 데이터를 메모리에 저장하고 구문 분석 한 후에? 하지만 어떻게? 필자는 필사적이다 : (
외부 라이브러리를 사용하고 싶지 않습니다.이 방법은 헤더를 바이너리 데이터로 나누지 않고 모든 데이터를 바이너리로 변환하는 것입니까? 그렇습니다. – fixo2020
글쎄, 당신이받을 때마다 버퍼에있는 모든 것들. 헤더의 끝에 도달했는지 확인하고 루프를 종료했는지 확인할 수 있지만 외부 라이브러리를 사용하지 않으려는 경우에는 도움이되지 않습니다. –
아마도 버퍼에있는 각 문자를 int (즉, 'int temp = (int) buffer [i];')로 변환하여 수학적으로 또는 수동으로 수행 한 다음이를 표준 10 진수 - 2 진 변환을 사용하여 2 진수로 변환 할 수 있습니다 기술. 모든 문자는 ascii 또는 유니 코드 색인을 가지므로이 작업을 수행 할 수 있습니다. –