首页 > 编程知识 正文

python解释器将源代码转换成,linux只有字符界面吗

时间:2023-05-05 11:09:06 阅读:152098 作者:779

因为是n年前写的,所以现在忘了,但是回头看看吧:

下面主要是将文字的编码,即文字转换成字节数组,对文字如何显示在屏幕上,即文字的解码工作进行了一些原理上的分析。 有很多编码方式和解码方式,这只是其中之一,但最终的目的是相同的,就是如何在屏幕上显示汉字。 仅供参考。

字符编码原理

图像. png

评论:

表示像素没有颜色,其位用0表示。

表示像素已着色,其位用1表示。

请看上面的照片。 显示着汉字的“人”。 每一格表示一个像素。 显示“人”字时使用了1616像素。 如果用1位二进制表示每个像素,则1616/8=32字节表示一个字符。 如果像素从左到右、从上到下扫描:

第一行的第一个字节是0x01,第二个字节是0x00;

第二行的第一个字节是0x01,第二个字节是0x80; 依次类推。

得到这样的字节数组。 const unsigned char ren[]=

{0x 01,0x 00,0x 01,0x 80,0x 01,0x 00,0x 01,0x 00,0x 02,0x 02,0x 02,0x 02,0x 02,0x 80,0x 80

此字节数组通过模仿各种字符将所有字符分解为32字节的单字节数组。

字符模板是指用一个个像素表示汉字笔划,然后按一定顺序(从左到右,从上到下)将这些像素组合成一个字节数组。 其中,每个字节中的1是彩色处理(颜色是可以自己选择的),例如"

,0是不着色的处理(即默认的背景色),例如"。 通过为32位字节分别添加颜色,汉字和其他字符将显示在屏幕上。

画面上显示的原理如下所示。

//绘制1616大小的中文字符,每行扫描16个像素,一共扫描16行16*16。

相当于文字解码作业

voiddraw_text16(uint32x,UINT32 y,UINT32 color,const unsigned char ch[] ) )

{

//UINT32是自己定义的数据类型,相当于int类型。 使用c语言的typedef函数定义数据类型,如typedef unsigned int UINT32。

//x,y坐标指定在画面上的哪个位置显示,const unsigned char ren[]表示模仿了字符的字节排列,color表示上面的哪个颜色,如果颜色是8位,则可以从256中选择

unsigned short int i,j;

unsigned char mask,buffer;

for(I=0; i16; I )

{

//I表示行数,每行16像素,一共16行,所以每行16/8=2字节。

//2、为什么要分成两部分来写呢,因为char型是8位,每行是16位,所以分为第1字节和第2字节。

//3,每个字节8位,分别扫描各位的值是1还是0,1表示着色,0表示不着色,选择要着色。 不着色而选择白色的情况下,一般给颜色选择黑色。 相当于这个word文档的显示方法。

//4,mask说明了继续向右移动,扫描字节的各位。

mask=0x80; //口罩

buffer=ch[i*2]; 提取//1行的第一个字节

for(j=0; j8; j )

{

缓冲掩码(if )

{

putpixel(xj,y i,color ); //给笔划上色实际上是把颜色的值写入帧存储器对应的地址,如果帧是画面的话,那个画面上有很多颜色,每种颜色都有固定的地址。

}

最大值=最大值1; //因为扫描字节的各位,所以mask每次扫描时都会向右移动一位。

}

mask=0x80; //掩码主要用于扫描字节的每一位是否为1,如果是1,则表示着色,如果是0,则表示不着色。

buffer=ch[i*2 1];//提取第一行的第二个字节

for(j=0; j8; j )

{

缓冲掩码(if )

{

putpixel(xj8,y i,color ); //给笔划上色

}

最大值=最大值1;

}

}

}

putpixel(xj8,y i,color )函数是笔划的颜色表示。 请看以下内容

//绘制像素点,并为每个像素着色

voidputpixel(u32x、U32 y、U32 c ) )。

{

//U32与上面分析的UINT数据类型相同。

LCD_BUFFER[y][x]=c;

//LCD_BUFFER数组表示帧存储器的首地址,y、x是像素的坐标,c是左、右序号,共256色,各自的左序号为0-255,将左、右序号写入对应的帧存储器的地址。

}

用一位数表示每个像素时,按一定的顺序扫描。 从左到右,从上到下,这决定了各位在屏幕上的位置。 如果该一位是1****,则表示着色,如果是****0,则表示不着色,如果一个字符显示在****1616****个像素面积上,则也可以是100个字符****y ) ),则对于在汉字的各像素表示* * * * LCD * * *上的绝对位置) x i,y j****的同时也能够确定汉字在帧存储器上的位置的着色问题,请参考* * *。 ****1****时,将指定的颜色写入帧存储器的位置。 例如,0****时不着色,将默认背景色写入帧存储器地址

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。