搜档网
当前位置:搜档网 › BMP图片转BIN 2进制

BMP图片转BIN 2进制

BMP图片转BIN 2进制
BMP图片转BIN 2进制

绝对能用VC6编译适合嵌入式图片转2进制或者WINDOWS上#include

#define BMP_SIZEH 240

#define BMP_SIZEV 320

#define uchar unsigned char

#define uint unsigned int

FILE *fpr, *fpw_bin;

uint colorArray[BMP_SIZEV][BMP_SIZEH];

typedef struct {

uchar blue;

uchar green;

uchar red;

} BMP_color;

typedef struct {

uchar color_H;

uchar color_L;

} TFT_color;

typedef struct {

uint H;

uint V;

} BMP_size;

char* numberToBmpName(int num, char* bmpName, char* file) {

int i = 0;

if((num<1000)&&(num>=0)) {

*(bmpName+0) = num/100 + 0x30;

*(bmpName+1) = num/10%10 + 0x30;

*(bmpName+2) = num%10 + 0x30;

while(*(file+i) != '\0') {

*(bmpName+3+i) = *(file+i);

i++;

}

*(bmpName+3+i) = *(file+i);

return bmpName;

} else {

return NULL;

}

}

char* hexToString(char *str, uchar hexNum) {

uchar i, j;

*(str+0) = '0';

*(str+1) = 'x';

i = hexNum & 0x0f;

j = (hexNum>>4) & 0x0f;

switch(j) {

case 0x00 :

*(str+2) = '0';

break;

case 0x01 :

*(str+2) = '1';

break;

case 0x02 :

*(str+2) = '2';

break;

case 0x03 :

*(str+2) = '3';

break;

case 0x04 :

*(str+2) = '4';

break;

case 0x05 :

*(str+2) = '5';

break;

case 0x06 :

*(str+2) = '6';

break;

case 0x07 :

*(str+2) = '7';

break;

case 0x08 :

*(str+2) = '8';

break;

case 0x09 :

*(str+2) = '9';

break;

case 0x0a :

*(str+2) = 'a';

break;

case 0x0b :

*(str+2) = 'b';

break;

case 0x0c :

*(str+2) = 'c';

break;

case 0x0d :

*(str+2) = 'd';

break;

case 0x0e :

*(str+2) = 'e';

break;

case 0x0f :

*(str+2) = 'f';

break;

}

switch(i) {

case 0x00 :

*(str+3) = '0';

break;

case 0x01 :

*(str+3) = '1';

break;

case 0x02 :

*(str+3) = '2';

break;

case 0x03 :

*(str+3) = '3';

break;

case 0x04 :

*(str+3) = '4';

break;

case 0x05 :

*(str+3) = '5';

break;

case 0x06 :

*(str+3) = '6';

break;

case 0x07 :

*(str+3) = '7';

break;

case 0x08 :

*(str+3) = '8';

break;

case 0x09 :

*(str+3) = '9';

break;

case 0x0a :

*(str+3) = 'a';

break;

case 0x0b :

*(str+3) = 'b';

break;

case 0x0c :

*(str+3) = 'c';

break;

case 0x0d :

*(str+3) = 'd';

break;

case 0x0e :

*(str+3) = 'e';

break;

case 0x0f :

*(str+3) = 'f';

break;

}

*(str+4) = ',';

*(str+5) = '\0';

return str;

}

BMP_color BMP_DAT;

int main()

{

TFT_color BIN_DAT;

BMP_size sizeBMP;

uchar c;

int ch;

uint picAdd = 0;

uint picDat = 0;

uint i;

uint color_tmp;

uchar sizeTemp[4];

uint j;

uint zoneNum;

char fileName[8];

uint bmpNum;

bmpNum = 0;

color_tmp = 0;

while( (fpr = fopen(numberToBmpName(bmpNum, fileName, ".bmp"), "rb")) != NULL) { j = 0;

i = 0;

fpw_bin = fopen(numberToBmpName(bmpNum, fileName, ".bin"), "wb+");

printf(numberToBmpName(bmpNum, fileName, ".bmp"));

printf(" is decoding..\n");

while(i<18) {

c=fgetc(fpr);

i++;

}

sizeTemp[0]=fgetc(fpr);

sizeTemp[1]=fgetc(fpr);

sizeTemp[2]=fgetc(fpr);

sizeTemp[3]=fgetc(fpr);

sizeBMP.H = sizeTemp[3];

sizeBMP.H = (sizeBMP.H<<8) + sizeTemp[2];

sizeBMP.H = (sizeBMP.H<<8) + sizeTemp[1];

sizeBMP.H = (sizeBMP.H<<8) + sizeTemp[0];

sizeTemp[0]=fgetc(fpr);

sizeTemp[1]=fgetc(fpr);

sizeTemp[2]=fgetc(fpr);

sizeTemp[3]=fgetc(fpr);

sizeBMP.V = sizeTemp[3];

sizeBMP.V = (sizeBMP.V<<8) + sizeTemp[2];

sizeBMP.V = (sizeBMP.V<<8) + sizeTemp[1];

sizeBMP.V = (sizeBMP.V<<8) + sizeTemp[0];

i = i + 8;

while(i<54) {

c=fgetc(fpr);

i++;

}

for(j=0; j

{

for(i=0; i

{

BMP_DAT.blue = fgetc(fpr);

BMP_DAT.green = fgetc(fpr);

BMP_DAT.red = fgetc(fpr);

color_tmp = BMP_DAT.red>>3;

color_tmp = (BMP_DAT.green>>2)|(color_tmp<<6);

color_tmp = (BMP_DAT.blue>>3)|(color_tmp<<5);

colorArray[i][j] = color_tmp;

}

if(sizeBMP.H%4)

{

for(i=0; i<(4-sizeBMP.H%4); i++)

{

fgetc(fpr);

}

}

}

for(i=0; i

{

for(j=0; j

{

BIN_DAT.color_L = colorArray[i][j];

BIN_DAT.color_H = colorArray[i][j]>>8;

fputc(BIN_DAT.color_L, fpw_bin);

fputc(BIN_DAT.color_H, fpw_bin);

}

}

fclose(fpr);

fclose(fpw_bin);

bmpNum++;

}

return 0;

}

容量及图片像素换算

K是千M是兆G是吉咖T是太拉 8bit(位)=1Byte(字节) 1024Byte(字节)=1KB 1024KB=1MB 1024MB=1GB 1024GB=1TB 数位组:一个在信息技术和数码技术领域中,用于表示信息的数量的单位。 一个数位组是数个二进位的组合。早期的不同计算机系统中使用的数位组含有的二进位数目不尽相同。但目前数位组在应用上已经统一,即,一个数位组通常由8个二进位组成。16个二进位合成一个字(word). 32个二进位构成一个复字(double words)。 每个二进位,可用来代表两种状态之一,如电路的开/断等)组成,因此可以代表28 = 256个不同的状态。 4个二进位的组合称为四位组(Nibble)。8个二进位的组合则为一个八位组(Octet)。所以一个数位组通常是一个八位组。 数位组是一个承载信息的基本单元。一个数位组表明的信息由所用的编码方式决定。不同的编码方式有可能用一个或多个数位组来表示一个数字,一个符号,或者一幅图像中的一个色点。常用的编码方式如用来表示字符集的ASCII编码或者ISO/IEC 8859标准的编码。 字节又被译为“字节”,即是在电脑内一个英文字所占的最基本单元。而一个中文字是占两个字节的。 由数位组引申出的计量单位 1 kilobyte kB = 1000 (103) byte 1 megabyte MB = 1 000 000 (106) byte 1 gigabyte GB = 1 000 000 000 (109) byte 1 terabyte TB = 1 000 000 000 000 (1012) byte 1 petabyte PB = 1 000 000 000 000 000 (1015) byte 1 exabyte EB = 1 000 000 000 000 000 000 (1018) byte 1 zettabyte ZB = 1 000 000 000 000 000 000 000 (1021) byte 1 yottabyte YB = 1 000 000 000 000 000 000 000 000 (1024) byte 1 nonabyte NB = 1 000 000 000 000 000 000 000 000 000 (1027) byte 1 doggabyte DB = 1 000 000 000 000 000 000 000 000 000 000 (1030) byte 注意上面Kibi这一系列的定义。Kibi来自英语kilo-binary(二进制的千), 1998年10月在IEC60027-2中订位标准。但到目前在各种应用中还没有完全占优势。 在信息行业中常用用于内存容量的MB, GB,几乎都是指220,230,…数位组。KB也经常表示210数位组,以区别于kB。当然你也会经常看到kB被混用来表示210数位组。这些表示法都并没有被标准化。

二进制相关试题图文稿

二进制相关试题 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

数制转换 1. 将十六进制数AB 转化为十进制数是_C___。 A 、175? B 、176? C 、171? D 、188 2. 十进制整数100化为二进制数是_A___。 A 、1100100 B 、1101000 C 、1100010 D 、1110100 3. (65.125)D =(1000001.001)B =(41.2)H 4. 十进制数241转换为二进制数是。 5. 十进制数(57、25)D 分别转换成二进制数(111001、01)B 、八进制数 (71、2)O 、十六进制(39、4)H 。 6. 十进制整数69转换成二进制数的结果是______。 A.1000011 B.1000101 C.1001001 D.1010001 7. 将十六进制数ADH 转化为十进制数是______。 A.171 B.172 C.173 D.113 8. 将十六进制数ADH 转化为八进制数是______。 A.171 B.172 C.173 D.255 9. 十进制整数96转换成二进制数的结果是______。 A.1010010 B.1100100 C.1010000 D.1100000 10. 将十六进制数ABH 转化为十进制数是______。 A.175 B.176 C.171 D.188 11. 二进制数2转换成十六进制数为______H 。 12. 十进制整数108化为二进制数是______。

A.1101000 B.1100110 C.1101100 D.1110100 转换成十六进制数的结果为______。 13.十进制数(67.125) 10 14.十六进制1000转换成十进制数是______。 A.4096 B.1024 C.2048 D.8192 转换成十六进制数为______。 15.二进制数(1011011.011) 2 16.十进制整数100化为二进制数是______。 A.1101000 B.1100100 C.1100010 D.1110100 转换成十六进制数的结果为______。 17.十进制数(35.375) 10 机器数/原码/反码/补码(暂时不考虑) 18.假定机器字长为8位,则[-1]补=。 19.将十进制数(-17)10转换成等价的字长为8位的机器数结果为。 20.将十进制数(-71)10转换成8位长的机器数结果为。 21.在8位(bit)机器字长中,15的补码是______。 22.在8位(bit)机器字长中,-79的补码是______。 23.将十进制数-65转换成8位长的机器数,正确的结果为______。 24.在8位(bit)机器字长中,-35的补码是______。 25.在8位(bit)机器字长中,-58的补码是______。 26.将十进制数-78转换成8位长的机器数,结果为______。 二进制表示的最大范围 27.用1个字节表示非负整数,最大值为______。 28.用1个字节表示带符号整数,其最大值所对应的十进制数为。 29.16位无符号整数的取值范围(0~216-1)。

php接收二进制数据流转换成图片

Php代码 1 error_handler () ); 33 34 //设置保存图片名称,若未设置,则随机产生一个唯一文件名 35 $this->save_name = $save_name ? $save_name : md5 ( mt_rand (), uniqid () ); 36 //设置保存图片路径,若未设置,则使用年/月/日格式进行目录存储 37 $this->save_dir = $save_dir ? self::ROOT_PA TH .$save_dir : self::ROOT_PA TH .date ( 'Y/m/d' ); 38 39 //创建文件夹 40 @$this->create_dir ( $this->save_dir );

二进制十进制算法

在一种数制中,只能使用一组固定的数字符号来表示数目的大小,具体使用多少个数字符号来表示数目的大小,就称为该数制的基数。例如: 1.十进制(Decimal) 基数是10,它有10个数字符号,即0,l,2,3,4,5,6,7,8,9。其中最大数码是基数减1,即9,最小数码是0。 2.二进制(Binary) 基数是2,它只有两个数字符号,即0和1。这就是说,如果在给定的数中,除0和1外还有其它数,例如 1012,它就决不会是一个二进制数。 3.八进制(Octal) 基数是8,它有8个数字符号,即0,l,2,3,4,5,6,7。最大的也是基数减1,即7,最小的是0。 4.十六进制(Hexadecilnal) 基数是16,它有16个数字符号,除了十进制中的10个数可用外,还使用了6个英文字母。它的16个数字依次是0,l,2,3,4,5,6,7,8,9,A,B,C,D,E,F。其中A至F分别代表十进制数的10至15,最大的数字也是基数减1。 既然有不同的进制,那么在给出一个数时,需指明是什么数制里的数。例如:(1010)2,(1010)8,(1010)10,(1010)16所代表的数值就不同。除了用下标表示外,

还可用后缀字母来表示数制。例如 ZA4EH,FEEDH,BADH(最后的字母 H表示是十六进制数),与(ZA4E)16,(FEED)16,(BAD)16的意义相同。 进制和位权 在数制中,还有一个规则,这就是,N进制必须是逢N进一。 对于多位数,处在某一位上的“l”所表示的数值的大小,称为该位的位权。例如十进制第2位的位权为10,第3位的位权为100;而二进制第2位的位权为2,第3位的位权为4,对于 N进制数,整数部分第 i位的位权为Ni-1,而小数部分第j位的位权为N-j。 l.十进制数的特点是逢十进一。例如: (1010)10 =1× 103+0× 102+1× 101+0× 100 2.二进制数的特点是逢二进一。例如: (1010)2 =l× 23+0 × 22+l× 21+0 × 20=(10)10 3.八进制数的特点是逢八进一。例如: (1010)8 =l× 83+0 × 82+l× 81+0 × 80=(520)10

通过java或jsp想数据库存取二进制图片(精)

1 MySQL存储大容量的二进制文件的格式是 blob ,其实除了图片还可以存别的 2 要向数据库存储二进制的文件一定要把要存储的数据转换成二进制流 废话就不多说了, 大家看看代码很容易明白, 先来看一个 app 程序, 当然首先您要在数据库中先建立一个用于保存图片的表和相应的列,数据格式为 blob package com.lizhe; import Java.io.*; import java.sql.*; public class PutImg { public void putimg( { try { Class.forName("org.gjt.mm.mysql.Driver".newInstance(; String url = "JDBC:mysql://localhost/img?user=root&password=root&useUnicode=true&characterE ncoding= gbk"; Connection conn = DriverManager.getConnection(url; Statement stmt = conn.createStatement(; //stmt.execute("insert into imgt (id values (5"; stmt.close(; PreparedStatement pstmt = null; String sql = "";

File file = new File("c: log.jpg"; InputStream photoStream = new FileInputStream(file; //sql = " UPDATE imgt SET img = ? "; sql = "INSERT INTO imgtable (img VALUES (?"; pstmt = conn.prepareStatement(sql; pstmt.setBinaryStream(1, photoStream, (int file.length(; pstmt.executeUpdate(; pstmt.close(; conn.close(; } catch (Exception e { e.printStackTrace(; } } public static void main(String args[]{ PutImg pi=new PutImg(; pi.putimg(; } } InputStream photoStream = new FileInputStream(file;

二进制十进制算法(终审稿)

二进制十进制算法 文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-

在一种数制中,只能使用一组固定的数字符号来表示数目的大小,具体使用多少个数字符号来表示数目的大小,就称为该数制的基数。例如 : 1.十进制(Decimal ) 基数是10,它有10个数字符号,即0,l ,2,3,4,5,6,7,8,9。其中最大数码是基数减1,即9,最小数码是0。 2.二进制(Binary ) 基数是2,它只有两个数字符号,即0和1。这就是说,如果在给定的数中,除0和1外还有其它数,例如1012,它就决不会是一个二进制数。 3.八进制(Octal ) 基数是8,它有8个数字符号,即0,l ,2,3,4,5,6,7。最大的也是基数减1,即7,最小的是0。 4.十六进制(Hexadecilnal) 基数是16,它有16个数字符号,除了十进制中的10个数可用外,还使用了6个英文字母。它的16个数字依次是0,l ,2,3,4,5,6,7,8,9,A ,B ,C ,D ,E ,F 。其中A 至F 分别代表十进制数的10至15,最大的数字也是基数减1。 既然有不同的进制,那么在给出一个数时,需指明是什么数制里的数。例如:(1010)2,(1010)8,(1010)10,(1010)16所代表的数值就不同。

除了用下标表示外,还可用后缀字母来表示数制。例如ZA4EH,FEEDH, BADH(最后的字母H表示是十六进制数),与(ZA4E) 16,(FEED) 16 ,(BAD) 16 的意义相同。 进制和位权 在数制中,还有一个规则,这就是,N进制必须是逢N进一。 对于多位数,处在某一位上的“l”所表示的数值的大小,称为该位的位权。例如十进制第2位的位权为10,第3位的位权为100;而二进制第2位的位权为2,第3位的位权为4,对于N进制数,整数部分第i位的位权为Ni-1,而小数部分第j位的位权为N-j。 l.十进制数的特点是逢十进一。例如: (1010)10=1×103+0×102+1×101+0×100 2.二进制数的特点是逢二进一。例如: (1010)2=l×23+0×22+l×21+0×20=(10)10 3.八进制数的特点是逢八进一。例如: (1010)8=l×83+0×82+l×81+0×80=(520)10 4.十六进制数的特点是逢十六进一。例如: (BAD)16=11×162+10×l61+13×160=(2989)10 一、二进制的算术运算 1.运算法则 (1)、加法法则 0+0=0

图片二进制读取

前段时间曾经写了一篇介绍MTK的铃声管理的工具,可以把MP3,MID,WAV等声音转化为MTK可以使用的数组以供在编程中使用。后来针对有些朋友需要把数组再转为文件的需求,写了把数组重新写回文件的文章。但MTK的图片管理与铃声管理差异比较大。MTK的图片管理需要把图片信息提取出来以后,经过加工才能使用。MTK把图片数组前八个字节用来描述图片的信息,然后才是图片的内容DATA。所以要生成图片信息,还需要写入数组头。数组头包括图片类型,分为GIF,BMP,PNG,JPB,PBM等,每一种使用一个unsigned char的类型描述。图片的桢数,同样使用一个字节描述。然后是图片的大小,使用三个字节描述,最后两个字节描述图片的高和宽。然后是图片的数据BUFFER。代码如下。 #include #include #include #include #define GDI_IMAGE_TYPE_INVALID 0 #define GDI_IMAGE_TYPE_BMP 1 #define GDI_IMAGE_TYPE_BMP_SEQUENCE 2 #define GDI_IMAGE_TYPE_GIF 3 #define GDI_IMAGE_TYPE_DEVICE_BITMAP 4 #define GDI_IMAGE_TYPE_DEVICE_BITMAP_SEQUENCE 5 #define GDI_IMAGE_TYPE_BMP_FILE 6 #define GDI_IMAGE_TYPE_GIF_FILE 7 #define GDI_IMAGE_TYPE_WBMP_FILE 8 #define GDI_IMAGE_TYPE_JPG 9 #define GDI_IMAGE_TYPE_JPG_FILE 10 #define GDI_IMAGE_TYPE_WBMP 11 #define GDI_IMAGE_TYPE_AVI 12 #define GDI_IMAGE_TYPE_AVI_FILE 13 #define GDI_IMAGE_TYPE_3GP 14 #define GDI_IMAGE_TYPE_3GP_FILE 15 #define GDI_IMAGE_TYPE_MP4 16 #define GDI_IMAGE_TYPE_MP4_FILE 17 #define GDI_IMAGE_TYPE_JPG_SEQUENCE 18 #define GDI_IMAGE_TYPE_PNG 19 #define GDI_IMAGE_TYPE_PNG_FILE 20 #define GDI_IMAGE_TYPE_PNG_SEQUENCE 21 #define GDI_IMAGE_TYPE_DEVICE_BMP_FILE 22 #define GDI_IMAGE_TYPE_BMP_FILE_OFFSET 23 #define GDI_IMAGE_TYPE_GIF_FILE_OFFSET 24 #define GDI_IMAGE_TYPE_M3D 25 #define GDI_IMAGE_TYPE_M3D_FILE 26 #define GDI_IMAGE_TYPE_SVG 27 #define GDI_IMAGE_TYPE_SVG_FILE 28

和二进制有关的那些事汇总

《和二进制有关的那些事儿——计算机中的信息编码》教学设计 【学习者分析】 本节课的教学对象是高一年级学生,学生已经对信息技术有了一定的自我认知。教材上对汉字在计算机中的编码写的比较简单但也比较抽象,以高一学生现在的认知结构不是很容易理解,学生往往被搞得一头雾水,难以形成科学系统的知识结构。基于以上教材和学情现状,我对这一部分内容重新进行了梳理,根据学生关心的生活问题编写了专题学习内容,引导学生迅速进入学习状态,并通过深度思考尝试自己解决问题。让学生克服编程畏难情绪,激发学生对未知知识的学习兴趣。并兼顾能力较强的学生,在导学案中设计不同的专题学习任务。在随堂练习环节,安排小组合作活动,形成帮带学习氛围。让学生在学习过程中,初步感受计算机信息编码的魅力,为以后的课程打好基础。 【教材分析】 本课以《信息技术基础》必修教材第四章第一节为基础,通过对信息技术基础知识的重新梳理、整合对“计算机中的信息编码”这一重要知识点进行了较为完整的归纳总结,帮助学生形成较为科学完善的知识结构。要了解计算机加工信息的内在机制,首先必须解决的难题就是计算机如何对信息进行编码。本节知识点较为抽象,不同层次的学生对本节的学习易产生分化,理解能力也存在着很大的差异,有些知识需要一定的基础才能领会和理解。我通过将教学内容设计成三个专题,围绕三组不同的问题展开学习内容,让学生课前自主选择并进入相应专题,这种基于问题的学习方法,能引起学生的自主关注。问题解决后,能给学生带来较大的心理成就感。揭开计算机加工信息的神秘面纱,激发学生探究欲望和学习的兴趣,也为后续选修模块《算法与程序设计》奠定基础。 【教学重点难点】 教学重点:数的编码方式;二进制在计算机信息编码中的应用。 教学难点:理解二进制的意义。 【课型】多媒体教室,讲授型课程 【教学过程】 #课前分组调查:二进制初体验#

ASP程序图片以二进制流的形式存入oracle数据库实例

Asp图片以二进制流的形式存入 oracle数据

一、运行环境与开发语言要求: 1、Win2003操作系统(安装方法省略) 2、IIS 6.0(安装方法省略) Asp网站配置方法如下图: 图1

图3 图4

图5 图6 访问首页方法如下图:

3、Oracles数据库(安装建库方法省略) 创建表,通过SQL语句创建: 图1

二、网站各页面代码如下: 1、连接数据库页面:conn_oracle.asp 代码如下: <% '打开数据库连接 Set Conn = Server.CreateObject("ADODB.Connection") myDSN = "Provider=OraOLEDB.Oracle;Data Source=TEST65;User ID=TEST65;PASSWORD=oracle;Persist Security Info=True" Conn.Open myDSN %> 2、已上传图片展示首页:default.asp 代码如下: <% dim i,intPage,page,pre,last,filepath set rs = server.CreateObject("adodb.recordset") sql="select * from pic order by id desc" '这里是条件和表根据需要自己改 rs.Open sql,conn,3,1 rs.PageSize = 6 '这里设定每页显示的记录数 pre = true last = true page = trim(Request.QueryString("page")) if len(page) = 0 then intpage = 1 pre = false else if cint(page) =< 1 then intpage = 1 pre = false else if cint(page) >= rs.PageCount then intpage = rs.PageCount last = false else intpage = cint(page) end if end if end if if not rs.eof then rs.AbsolutePage = intpage end if %>