1
파일의 일부에 대해 올바른 md5 해시를 얻는 데 문제가 있으므로 내 코드는 다음과 같습니다. 전체 파일을 읽을 때마다 (찾기와 읽기없이) 괜찮습니다. 오류는 어디에 있습니까?Poco 라이브러리가있는 파일의 일부 MD5를 계산합니다.
long length = (offset_end - offset_start) + 1;
char* buffer = new char[length];
std::ifstream ifs(downloadFile->url_hdd.c_str(), std::ios::binary);
ifs.seekg(offset_start, std::ios::beg);
ifs.read(buffer, length);
ifs.close();
std::stringstream stringStream(buffer);
Poco::MD5Engine md5;
Poco::DigestOutputStream outstr(md5);
outstr << stringStream.str();
outstr.flush(); //to pass everything to the digest engine
const Poco::DigestEngine::Digest& digest = md5.digest();
std::string md5string = Poco::DigestEngine::digestToHex(digest);
아니요. 데이터를 사용하기 전에 [데이터 삭제] *로 전혀 작동하지 않습니다. 이제 * 정의되지 않은 동작 *이 있습니다. 질문을 작성하라는 실제 코드에서이 작업을 수행합니까? –
예, 실제 사례입니다. 삭제 한 것을 알아 차리고 적절한 장소로 이동해 주셔서 감사합니다. 그럼에도 불구하고 그것을 움직이지 않고 일하고있었습니다 (이상하게). – Thunder
정의되지 않은 동작이 잘 정의되어 있지 않기 때문입니다. :) 당신은 무슨 일이 일어날 지 예측할 수 없습니다. 때로는 효과가 있으며 때로는 그렇지 않을 수도 있습니다. –