📄 lsb.c
字号:
// Author: chenxiang
// Data: 2008-04-09
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
typedef struct
{
BYTE red;
BYTE green;
BYTE blue;
}RGB24;
int main(int argc, char *argv[])
{
if (argc != 2)
{
printf("help\n");
printf(" lsb *.bmp\n");
return 1;
}
FILE *fin, *fout;
fin = fopen(argv[1], "rb");
if (fin == NULL)
{
return 0;
}
char filename[256];
WORD filesize;
strcpy(filename, argv[1]);
strcat(filename, "_result.bmp");
fout = fopen(filename, "wb");
if (fout == NULL)
{
fclose(fin);
return 0;
}
BITMAPFILEHEADER bmfHeader;
BITMAPINFOHEADER bmiHeader;
fread(&bmfHeader, sizeof(bmfHeader), 1, fin);
filesize = bmfHeader.bfReserved1;
fread(&bmiHeader, sizeof(bmiHeader), 1, fin);
RGB24 rgb;
BYTE *array = (BYTE *)malloc(sizeof(BYTE) * bmiHeader.biHeight * bmiHeader.biWidth * 3);
LONG i, j, k;
k = 0;
for (i = 0; i < bmiHeader.biHeight; i++)
{
for (j = 0; j < bmiHeader.biWidth; j++)
{
fread(&rgb, sizeof(rgb), 1, fin);
array[k++] = rgb.red & 0x01;
array[k++] = rgb.green & 0x01;
array[k++] = rgb.blue & 0x01;
}
}
BYTE data;
for (i = 0; i < filesize; i++)
{
data = 0;
for (j = 0; j < 8; j++)
{
data += array[8 * i + j] * pow(2, 7 - j);
}
fwrite(&data, sizeof(data), 1, fout);
}
free(array);
fclose(fin);
fclose(fout);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -