안녕하세요! 파일의 처음 4 바이트를 읽고 정수 변수에 저장하려고합니다. 여기에 내가 뭘 내용은 다음과 같습니다파일에서 짧은/긴 정수로 바이트 읽기
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstring>
using namespace std;
int main(){
ifstream is;
is.open ("binary_file.dat", ios::binary);
char file_version[4];
is.read(file_version, 4);
int fv_int;
memcpy(&fv_int, file_version, sizeof(fv_int));
cout << fv_int;
}
그러나 결과는 나는 그것이 될 운명이되지 것입니다. 프로그램은 파일의 첫 번째 바이트를 올바른 위치에 복사하지만 나머지 바이트는 0으로 간주합니다. 예 : 내 파일의
첫 번째 4 바이트 :
10101010 00101100 00101100 00101100
프로그램 실행 후 fv_int의 내용에 무엇입니까 :
10101010 00000000 00000000 00000000
특정 바이트 정수에 액세스 할 수있는 방법이 있나요이? 아니면 파일에서 바이트를 읽는 더 나은 방법?
단지'is.read (& fv_int, 4);'할 수 없습니까? 또한, 왜'int'가 4 바이트 길이라고 가정합니까? –
int 값은 플랫폼에 따라 다르므로 int 대신 int32_t (stdint.h에서)를 사용해야합니다. 이것은 아마도 문제를 해결하지는 못하지만 코드를 더 이식성있게 만듭니다. –
@ H2CO3 : C++ std :: istream :: read()는 char에 대한 포인터를 사용합니다. 슬프지만 사실이야. –