#include <stdio.h> #include <stdlib.h> void ToBin(char* lpOutput, char* lpInput, int nInputSize) { int nInput; int nI, nJ; nJ = 0; for (nI = 0; nI < nInputSize; nI++) { nInput = lpInput[nI]; lpOutput[nJ++] = (nInput & 0x80) ? '1' : '0'; lpOutput[nJ++] = (nInput & 0x40) ? '1' : '0'; lpOutput[nJ++] = (nInput & 0x20) ? '1' : '0'; lpOutput[nJ++] = (nInput & 0x10) ? '1' : '0'; lpOutput[nJ++] = (nInput & 0x08) ? '1' : '0'; lpOutput[nJ++] = (nInput & 0x04) ? '1' : '0'; lpOutput[nJ++] = (nInput & 0x02) ? '1' : '0'; lpOutput[nJ++] = (nInput & 0x01) ? '1' : '0'; } } FILE *SafeOpenFile(char *lpFileName, char *lpMode, FILE **lpFile) { *lpFile = fopen(lpFileName, lpMode); if (! *lpFile) printf("Cannot open file: "%s"\n", lpFileName); return *lpFile; } long GetSizeOfFile(FILE* lpFile) { long nCurrentPos; long nResult; nCurrentPos = ftell(lpFile); fseek(lpFile, 0, SEEK_END); nResult = ftell(lpFile); fseek(lpFile, nCurrentPos, SEEK_SET); return nResult; } char* LoadFile(FILE* lpFile) { long nFileSize; char* lpResult; nFileSize = GetSizeOfFile(lpFile); lpResult = (char*)malloc(nFileSize); if (! lpResult) goto the_end; if (fread(lpResult, 1, nFileSize, lpFile) != nFileSize) { free(lpResult); lpResult = NULL; } the_end: return lpResult; } int main() { FILE* lpInputFile; FILE* lpOutputFile; char* lpInput; char* lpOutput; long nFileSize; int nResult; nResult = 1; if (! SafeOpenFile("input.txt", "rb", &lpInputFile)) goto the_end; if (! SafeOpenFile("output.txt", "w+b", &lpOutputFile)) goto the_end; lpInput = LoadFile(lpInputFile); if (! lpInput) { printf("Echec du chargement du fichier\n"); goto the_end; } nFileSize = GetSizeOfFile(lpInputFile); lpOutput = (char*)malloc(nFileSize * 8); if (! lpOutput) { printf("Echec de l'allocation du buffer de sortie\n"); goto free_input; } ToBin(lpOutput, lpInput, nFileSize); if (fwrite(lpOutput, 1, nFileSize * 8, lpOutputFile) != nFileSize * 8) { printf("Echec de l'écriture\n"); goto free_output; } nResult = 0; free_output: free(lpOutput); free_input: free(lpInput); the_end: return nResult; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionchar nResult nResult = 0; if (lpBuffer[nI ] == '1') nResult &= 0x80; if (lpBuffer[nI + 1] == '1') nResult &= 0x40;