한 번에 10 비트 씩 바이너리 데이터에 액세스하려고합니다. 가장 좋은 방법은 부호없는 long long으로 40 비트를 읽은 다음 비트 마스킹을 사용하여 원하는 데이터에 액세스하는 것입니다. 내 노력은 64 비트를 읽는 것 같고 누군가 내가 잘못 가고있는 부분을 지적 할 수 있는지 궁금합니다. 감사.이진 데이터를 한 번에 40 비트 읽음
FILE * pFile;
long lSize;
unsigned long long * buffer;
size_t result;
pFile = fopen ("test.bin" , "rb");
if (pFile==NULL) {fputs ("File error",stderr); exit (1);}
fseek (pFile , 0 , SEEK_END);
lSize = (ftell (pFile))/5;
rewind (pFile);
buffer = (unsigned long long*) malloc (sizeof(unsigned long long)*lSize);
if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}
result = fread (buffer,5,lSize,pFile);
if (result != lSize) {fputs ("Reading error",stderr); exit (3);}
때 I 출력 버퍼 [0] 내가 갖는 :
0100110111001110101110001110000111011111110001100011100110111011
하지만 난 뭔가 얻을 것이라고 생각 :
0000000000000000000000001110000111011111110001100011100110111011
그리고 파일 test.bin의 실제 내용이 무엇인가 :
일반적인 방법은 읽지 않은 비트의 수와 함께 1 바이트 버퍼를 유지하는 것입니다? HxD와 같은 16 진수 편집기에서 엽니 다 (Windows에서 작업한다고 가정). – Dialecticus
버퍼를 0으로 초기화합니다. 예를 들어'calloc'을 사용하십시오. – pSoLT
@Dialecticus 방금 16 진수 편집기를 다운로드하고 내용을 확인하지 않았습니다. There 1011101100111001110001101101111100111001110001101101111111100001 – Kahless