自学高考加油视频 高考加油的python的代码

 网络   2022-10-06 05:11   21

点阵字

完结此动机 开始是点阵字的概念 点阵字体是把每一个字符都分成16×16或24×24个点 然后用每个点的真假来示意字符的轮廓。点阵字体也叫位图字体 个中每个字形都以一组二维像素信息示意。

咱们拿Python print来打印的话 最佳是有现成可用的点阵字库 这样根据其像素信息直接转化为print的字符就也许了。

HZK16字库

HZK即汉字库的首字母缩写 HZK16字库是契合GB2312规范的16×16点阵字库 支柱的汉字有6763个 每个汉字模子须要16×16一共须要256个点来再现 每个点是二进制位也便是2的256次方数据 即32个字节。

那么思路认识了 根据字符串中汉字字符编码 去HZK16字库中猎取点阵信息 拿到信息后根据16*16点阵每个点的数据 print出分歧字符。

留神 运行代码时要正在代码文件住址文件夹内推广HZK16文件 不然是拿没有到点阵数据 HZK16文件鄙人载链接中也许找到

完结多字

import binascii

KEYS [0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01]

def printPlay(textStr,line,background):

# 初始化16*16的点阵位置 每个汉字须要16*16 256个点来示意 须要32个字节才华再现一个汉字

# 之因而32字节 256个点每个点是0或1 那么一共便是2的256次方 一个字节是2的8次方

rect_list [] * 16

for i in range(16):

rect_list.append([] * 16)

for text in textStr:

#猎取中文的gb2312编码 一个汉字是由2个字节编码组成

gb2312 text.encode( gb2312 )

#将二进制编码数据转化为十六进制数据

hex_str binascii.b2a_hex(gb2312)

#将数据按unicode转化为字符串

result str(hex_str, encoding utf-8 )

#前两位对于应汉字的第一个字节 区码 每一区纪录94个字符

自学高考加油视频 高考加油的python的代码

area eval( 0x result[:2]) - 0xA0

#后两位对于应汉字的第二个字节 位码 是汉字正在其区的位置

index eval( 0x result[2:]) - 0xA0

#汉字正在HZK16中的一致偏移位置 最终乘32是由于字库中的每个汉字字模都须要32字节

offset (94 * (area-1) (index-1)) * 32

font_rect None

#读取HZK16汉字库文件

with open( HZK16 , rb ) as f:

#找到目的汉字的偏移位置

f.seek(offset)

#从该字模数据中读取32字节数据

font_rect f.read(32)

#font_rect的长度是32 此处异常于for k in range(16)

for k in range(len(font_rect) // 2):

#每行数据

row_list rect_list[k]

for j in range(2):

for i in range(8):

asc font_rect[k * 2 j]

#此处 为Python中的按位与运算符

flag asc KEYS[i]

#数据法则猎取字模中数据推广到16行每行中16个位置处每个位置

row_list.append(flag)

#根据猎取到的16*16点阵信息 打印到掌握台

for row in rect_list:

for i in row:

if i:

#远景字符(即用来示意汉字笔划的输出字符)

print(line, end )

else:

# 背景字符(即用来示意背景的输出字符)

print(background, end )

print()

inpt input( 输入实质 )

lineSign ■

backgroundSign ○

#backgroundSign .

printPlay(inpt,lineSign,backgroundSign)

本文地址:http://yz.ziyouea.com/p/19560.html
版权声明:本站文章来自网络,如有违规侵权请联系我们下架。